python使用requests库进行raw请求
时间:2023-4-16 13:19 作者:admin 分类: 技术文章
前言
在写漏洞利用 EXP 的某些场景下,比如路径穿越,URL 中带有 ../
或 ./
这类特殊的 URL path, requests 库的会将 url path 解析后再请求,比如一个url如下
/path/to/../../../../../../../../../../../../etc/passwd
解析后的实际请求url会变成 /etc/passwd
,导致失去原本的测试意义。
解决
那如何在requests库中使用raw请求来进行原始请求呢?
答案是使用 requests.PreparedRequest
函数来创建一个未经解析的请求,可以在发送到服务器之前进行进一步修改。
测试demo
import requests
ses = requests.Session()
url = 'http://httpbin.org/test/path/to/poc/../../../../././././../etc/passwd'
req = requests.Request('GET', url)
prepared = ses.prepare_request(req)
prepared.url = url
response = ses.send(prepared)
print(req.url,"\n",response.status_code)
这篇文章源于我在修改 Re2Pcap 项目的时候记录创作,希望可以帮到大家。
参考
推荐阅读: