less18

如果输入正确的账号密码,则页面回显你的ip与user-agent

1732457032265

如果错误登录则只会回显ip,显然不能进行之前的注入。

我们查看源码(这里是一部分)

1732419575415

发现密码和账户都被17关的过滤给保护起来了。因此显然难以通过账户密码进行注入,但我们可以发现在查询成功处有给insert操作将uagent,与ip和uname插入括号里的三个字段中,我们便能想到通过修改uagent的值进行注入。

要修改这个值我们需使用burp suite来进行抓包。

并且修改user-agent的值。

1733489271913

这里的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语句的变量少了。

1735725090372

注入成功。

less20(cookie)

首先尝试直接在username和password注入,无果,我们可以首先使用合法的账户登录,再由标题可知我们可以从cookie下手,既然页面能显示我的cookie,那么他一定在后台获取了我的cookie,又显示了我的账户密码,我们便可以猜测是通过检验cookie中的uname的值来显示不同的账号密码,我们查看源码。

1736838783987

我们便能知道注入点就是那个SQL语句。我们只要修改cookie的值便能进行注入。例如

1736839137733

我们便可以得到想要的值。

less21(cookie)

同上,不过是括号加单引号闭合,且是base64编码。

less22(cookie)

同20,但是双引号