CTF场景下如何用ZAP Proxy修改POST请求注入zip文件
使用ZAP Proxy替换POST上传的ZIP文件二进制数据
我之前也碰到过类似的CTF场景,用ZAP完全能实现替换上传文件的需求,不用依赖Burp。下面是一步步的实操指南:
1. 准备好恶意ZIP文件
先确保你已经生成了适配PHP ZIP Wrapper LFI漏洞的恶意ZIP包(比如里面包含精心命名的恶意PHP文件,匹配LFI的路径利用规则),把它存在本地,比如命名为evil.zip。
2. 配置ZAP并开启请求拦截
- 打开ZAP,将你的浏览器代理设置为ZAP默认的
127.0.0.1:8080,确保流量能经过ZAP。 - 点击ZAP顶部工具栏的Intercept按钮,确认它处于开启状态(按钮显示蓝色,提示"Intercept is on")。
3. 触发上传请求并拦截
在浏览器中打开目标上传页面,随便选一个测试用的ZIP文件提交上传——这时候ZAP会自动拦截到这个POST请求。
4. 替换ZAP中的文件二进制内容
拦截到请求后,切换到Request标签页,找到multipart/form-data结构里对应文件上传的区块(通常会有Content-Disposition: form-data; name="file"; filename="test.zip"这类标识行):
- 右键点击该区块里
Content-Type: application/zip下方的二进制内容区域,选择Replace file content。 - 在弹出的文件选择窗口中选中你本地的
evil.zip——ZAP会自动替换原有测试ZIP的二进制数据,同时处理好编码问题(这比手动粘贴cat命令的输出靠谱多了,终端输出很容易因为编码或换行导致数据损坏)。
5. 发送修改后的请求
确认替换无误后,点击ZAP顶部的Forward按钮,把修改后的POST请求发送给目标服务器,之后就可以继续推进LFI的利用步骤了。
额外小技巧:手动粘贴二进制的正确方式
如果不想用ZAP的文件替换功能,也可以用命令把ZIP转成可直接粘贴的纯字符串:
# 将evil.zip转为无换行的十六进制字符串,复制后粘贴到ZAP的请求内容区即可 xxd -p evil.zip | tr -d '\n'
不过这种方式出错概率较高,还是优先推荐ZAP内置的文件替换功能。
内容的提问来源于stack exchange,提问作者cfernandezlinux
相关产品推荐
相关产品推荐

