因缺思厅的绕过

看一下页面源码,看到source.txt。所以进入同目录下的source.txt

代码审计下,并且百度了一些函数。过滤了很多关键字,因此常规的SQL注入没有头绪。想了挺久,因为要满足三个条件。1:不能输入过滤的关键字2:只能返回一行数据3:并且输入的密码与返回的一行数据中的pwd一样才 print"CTF{xxxxxx}"。所以看了下大佬们的WP,学到了with rollup的语法。详细的讲解可以看这个

https://www.jianshu.com/p/1ecec1f6f3db

简单的来说就是利用with rollup的语法,在最后一行添加了NULL 的数据,即PWD=NULL。所以在POST输入页面,不填写PWD,空字符与NULL相等.因此可以满足了并且用'1 or 1 limit 1 offset 0#    ,  '1 or 1 limit 1 offset 1#     ,   '1 or 1 limit 1 offset 2#     可以看出来当2#的时候,返回的是“一颗赛艇”,即不满足一行的数据的条件,其他的两个都是满足一行数据的条件。因此第三行没数据。所以只有两行数据。因此用了with rollup的语法后,在第三行生成了一行NULL数据。因此payload可以为1' or 1 group by pwd with rollup limit 1 offset 2#     pwd不填值。

 

 

 

limit 1 查询一行

offset 2从第三行开始

关于wiht rollup语法,https://www.cnblogs.com/shuangnet/archive/2013/03/26/2982144.html这篇文章讲的是group up 两个字段的情况,之前看了这个,进了这个坑。自己动手试了一下才出了这个坑

 

自己动手了试了一下

 

posted @ 2019-03-19 21:53  yunying  阅读(200)  评论(0编辑  收藏  举报