- 判断过滤哪些关键词和字符
使用Burp Suite的Intruder,字典内容就是常见的SQL注入的一些函数名、符号等。
buuoj有访问限制,访问太快会提示429 Too Many Requests,所以,需要设置一下延时。
返回长度有493、492、482、472,分别对应不同的回显。
- 493:Hello, glzjin wants a girlfriend.
- 492:Error Occured When Fetch Result.
- 482:SQL Injection Checked.
- 472:bool(false)
其中主要是482的过滤和472返回的bool,也没有其它回显,所以猜测布尔盲注。但是空格、or、and等都被过滤了
- SQL异或运算
大概在这里应用就是假^假=真
,真^真=假
,假^真=真
,真^假=真
。
当我们查询1^0
、0^1
、和1
的回显是正常的,而查询1^1
和0^0
会有报错提示。
所以结合SQL语句,我们可以构造0^payload,若为payload结果真,则返回...;反之...
因为空格被过滤,所以用括号来代替空格
。
构造payload:0^(ascii(substr((select(flag)from(flag)),1,1))>1)
- substr():截取查询结果的从第一字符开始的一个字符
- ascii():ascii值>1指这个值不为NULL
盲注python脚本:
参考链接:
https://blog.csdn.net/TM_1024/article/details/106978766