【实战】某项目SQL注入引发的思考

数据包:

测试参数:username,测试payload:

‘ or ‘1‘=‘1

‘ or ‘1‘=‘2

响应结果都未发生任何变化,借助sqlmap测试,结果一样:

 尝试在or前面进行简单的fuzz,结果为:

发现‘ or 1=1 or ‘1‘=‘1可以直接登录系统,也就是说此处是存在sql注入的,构造payload,借助sqlmap检测 

进一步分析,or 1=1 为true,说明后边or ‘1‘=‘1语句在数据库中执行结果为false,猜测也许在or ‘1‘=‘1后边还有其它未知的字符,尝试用burp测试了下,未找到。那既然这样,当时就想到直接后边and ‘1‘=‘1应该也行吧(无脑image),结果发现是错误的,查了下资料,and的优先级大于or,所以如果‘ or 1=1 and ‘1‘=‘1,会先执行 1=1 and ‘1‘=‘1 ,显然这个结果是false,然后or false,结果也是个false喽。

最后贴个sql运算符的优先级顺序图吧: 

 

 

相关文章