[NCTF2019]SQLi

一个SQL小技巧

题目描述

上来就一个登录框,同时还给了查询的语句select * from users where username='' and passwd=''

robots.txt -> hint.txt,给了过滤规则和flag获取方式

看到这个条件反射性地以为是Quine,但这里连union select都过滤了。

解题流程

看了WP,只能说还是见少了。

在username处输入\,逃逸掉username第二个单引号,这样第一个单引号就会和passwd的第一个单引号闭合。查询就变成了select * from users where username='\' and passwd=''。

对于passwd输入||(passwd)REGEXP("^c"),这个是用正则来匹配passwd查询结果。这样就可以进行盲注了

而passwd的第二个单引号还需要注释掉。这里又学到了,过滤了#-的情况下可以用00来注释。

最后写出这个payload可以像这样:username=&passwd=||(passwd)REGEXP("^y");️️0️⃣0️⃣

最后通过盲注得到密码:you_will_never_know7788990

输入密码get flag