攻防世界 supersqli 解题思路
随便注,初步判断是有注入点的,那我们进入题目
提交一个1试一试
再在1的后面加个单引号试一试
报错了,然后我们判断有几个字段。
回车后正常,但是换成3后就报错了,所以有两个字段。
当我想用联合查询查询用户和数据库的时候
爆出一段正则表达式,发现过滤掉了图中的关键字。然后我寻找绕过点,发现了堆叠注入。
查询表
查询字段
发现flag,然后我们想办法读取flag值。因为select被正则表达式给过滤掉了,所以这里我们就要想一点骚姿势了。刚开始我想了一堆的内联注释都被检测出来了。实在没忍住去看了大佬的wp,大佬用来预编译来绕过,在我的印象里预编译一直是用来防止sql注入的,没想到还能用来绕过,学到了!
直接上个payload
-1';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#
参考连接 https://www.cnblogs.com/joker-vip/p/12483823.html