攻防世界 supersqli 解题思路

攻防世界 supersqli 解题思路

随便注,初步判断是有注入点的,那我们进入题目

攻防世界 supersqli 解题思路

提交一个1试一试

攻防世界 supersqli 解题思路

再在1的后面加个单引号试一试

攻防世界 supersqli 解题思路

报错了,然后我们判断有几个字段。

攻防世界 supersqli 解题思路

回车后正常,但是换成3后就报错了,所以有两个字段。

攻防世界 supersqli 解题思路

当我想用联合查询查询用户和数据库的时候

攻防世界 supersqli 解题思路

攻防世界 supersqli 解题思路

爆出一段正则表达式,发现过滤掉了图中的关键字。然后我寻找绕过点,发现了堆叠注入。

查询表

攻防世界 supersqli 解题思路

攻防世界 supersqli 解题思路

查询字段

攻防世界 supersqli 解题思路

攻防世界 supersqli 解题思路

发现flag,然后我们想办法读取flag值。因为select被正则表达式给过滤掉了,所以这里我们就要想一点骚姿势了。刚开始我想了一堆的内联注释都被检测出来了。实在没忍住去看了大佬的wp,大佬用来预编译来绕过,在我的印象里预编译一直是用来防止sql注入的,没想到还能用来绕过,学到了!

直接上个payload  

-1';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#

攻防世界 supersqli 解题思路

攻防世界 supersqli 解题思路

参考连接 https://www.cnblogs.com/joker-vip/p/12483823.html