SQL注入姿势

一、双等号绕过

例题: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的注释符,但是我没有成功注入。。。不知道哪里出问题了

猜你喜欢

转载自blog.csdn.net/cyjmosthandsome/article/details/88080304