正常执行Less-5可以得到:

在id之后加上单引号可以看到错误提示:

我们所以这个也是单引号包裹着id的查询。用union select来判断列数,得到列数依然是3. 但是要进行下一步注入时发现,不管我们注入什么,网页只返回一个结果。

看源码之后发现,页面完全没有把查询结果给打印出来。

根据题目提醒,这是double query注入。双查询注入在页面没有返回的情况下利用数据库报错的信息得到查询结果。
简单的一句话原理就是有研究人员发现,当在一个聚合函数,比如count函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来。(https://www.2cto.com/article/201303/192718.html)
在数据库中执行效果如图:

这样我们就可以通过替换concat里面的select语句来进行注入。
网友评论