[极客大挑战 2019]EasySQL
打开环境
有两个输入框,先测试是否存在注入
密码框输入单引号后可以看到报错语句,说明存在注入
这题其实直接用万能密码就能直接出flag:1' or '1'='1
但当我尝试用注释符进行绕过时,发现了一些不对劲:1' or 1=1 --+
我想用注释符将最后一个单引号给注释掉,结果却发现怎么也不行,他始终报错说多一个单引号,经过一系列尝试后,终于找到解决方法。
就是在--+后面随便加上一些内容,例如:1'+or+1=1+--+6
那为什么要这样做呢,因为我突然想到,我以前在学习做登录功能的时候遇到有的程序会把密码里的空格给去掉后,再进行表查询
String pass=request.getParameter("pass").trim(); //去除首尾空格
就像上面那样,使用trim就可以将首尾的空格删掉,而我们最后那个--+正好对应了这种情况,最后一个空格被删掉后就会导致我们的注释符失效,这也是SQL的语法规定,--注释符后必须要有一个空格才能进行正常注释,所以只要在注释符后面随便添加一些内容就可以绕过trim函数了。