less18
如果输入正确的账号密码,则页面回显你的ip与user-agent
如果错误登录则只会回显ip,显然不能进行之前的注入。
我们查看源码(这里是一部分)
发现密码和账户都被17关的过滤给保护起来了。因此显然难以通过账户密码进行注入,但我们可以发现在查询成功处有给insert操作将uagent,与ip和uname插入括号里的三个字段中,我们便能想到通过修改uagent的值进行注入。
要修改这个值我们需使用burp suite来进行抓包。
并且修改user-agent的值。
这里的payload是1','2',(select 1 from (select concat((floor(rand(0)*2 )),database()) as a,count(*) from information_schema.tables group by a)as t))#
我们也可以用extractvalue,updatexml等函数的报错注入来简化payload。
less19
看关卡标题我们就可以知道这关和上关类似,不过这次我们需要修改的是Referer请求头,Referer指的是发起请求的上一页面也就是要从哪跳转到下一页面。
我们构造的payload和上一关类似
1',extractvalue(1,concat(0x7e,(select database()))))#
因为源码中insert语句的变量少了。
注入成功。
less20(cookie)
首先尝试直接在username和password注入,无果,我们可以首先使用合法的账户登录,再由标题可知我们可以从cookie下手,既然页面能显示我的cookie,那么他一定在后台获取了我的cookie,又显示了我的账户密码,我们便可以猜测是通过检验cookie中的uname的值来显示不同的账号密码,我们查看源码。
我们便能知道注入点就是那个SQL语句。我们只要修改cookie的值便能进行注入。例如
我们便可以得到想要的值。
less21(cookie)
同上,不过是括号加单引号闭合,且是base64编码。
less22(cookie)
同20,但是双引号