一、双等号绕过
例题:http://ctf5.shiyanbar.com/web/wonderkun/web/index.html (登陆一下好吗)
payload:username=a'='&password=a'='
username=a'='0&password=a'='0
解析:
后端PHP代码应该为:select ** from ** where username='$username' and password='$password'.
加入payload之后完整代码:select ** from ** where username='a'='' and password='a'=''.
红色字体的username='a'和password='a'在数据库中查询不到,于是返回0,0=''/0='0'为真,于是返回1,于是整个代码为真,于是输出数据库中的所有信息。
在本地数据库中经测试,发现这几种都可以。但是题目中后台代码用''闭合,所以不是全部都能登录拿flag。
另一种payload:利用MySQL的数据类型转换特性
本地测试:
甚至这样也可以
但是只有取0时可以,1、2....都不行。
经测试,发现利用所有原本应该接受数字类型为输入的字段,用0代替后都可以输出所有的字段。
回到题目,看到网上说;%00也是MySQL的注释符,但是我没有成功注入。。。不知道哪里出问题了