解题链接
思路
审计网页代码,发现有一个注释:
<!--source: source.txt-->
访问同目录下的source.txt
发现登陆的逻辑代码,下面就可以针对它进行绕过!
这里有三层限制
0x00
在第一层的filter里面就过滤了常用的SQL关键词,所以常规的SQL 注入就不行了。如果输入了filter里面的语句,就会返回浜﹀彲璧涜墖锛�
0X01
第二层是限制从数据库返回的数据必须是一行,在满足第一层条件的情况下可以使用 limit 的返回来确定数据库中总共有几行数据。
注意它的查询语句是 select * from interest where uname = '{$_POST['uname']}'于是构造:
1' or 1 limit 1 offset 0#
1' or 1 limit 1 offset 1#
1' or 1 limit 1 offset 2#
发现2#时返回涓€棰楄禌鑹囷紒其他都是浜﹀彲璧涜墖锛�———–说明数据库只有两条信息
0x02
接下来想办法绕过第三层,这里是个if判断,只要为true 就可以过,于是可以利用group by with rollup来绕过,group by with rollup会在统计后的产生一条null信息,然后在pwd里不写值,if就为true了
1' or 1 group by pwd with rollup limit 1 offset 2#
答案
CTF{with_rollup_interesting}