[SUCTF 2019]easy_sql
过滤了很多字符没有去都试出来,尝试了一下存在堆叠注入想用show尝试,没有成功,确实吗解出来,去看了下大佬的wp查询语句为
select $_POST || flag from flag
并且对post传过来的值进行了过滤。如果输入的内容在预设的arr当中就会返回Nonono.
其中的|| 就代表了or,所以当输入1的时候查询就会变成select 1 || flag from flag这时查的就是select 1 from flag所以不管输入什么都是查输入的。因为存在堆叠注入,就可以用sql_mode来定义sql语法。
sql_mode=PIPES_AS_CONCAT使||符号的作用变为字符串的拼接。
构建payload:1;set sql_mode=PIPES_AS_CONCAT;select 1
和查询语句拼接起来就是 select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag
需要注意的是 sql_mode=PIPES_AS_CONCAT模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个 || 相当于是将 select 1 和 select flag from flag 的结果拼接在一起
还有一个非预期解:*,1
拼接起来看,不难理解 : select *,1||flag from Flag这边应该是忘了把*号过滤。

本文详细解析了SUCTF2019中easy_sql挑战的解决思路,介绍了如何利用堆叠注入和特殊SQL模式绕过过滤,并成功获取flag。
1万+

被折叠的 条评论
为什么被折叠?



