«

python使用requests库进行raw请求

admin 发布于 2023-4-16 13:19   5399 次阅读   技术文章   


前言

在写漏洞利用 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 项目的时候记录创作,希望可以帮到大家。

参考

Python 技术

版权所有:Mrxn's Blog
文章标题:python使用requests库进行raw请求
文章链接:https://mrxn.net/jswz/709.html
本站文章均为原创,未经授权请勿用于任何商业用途

扫描二维码,在手机上阅读

推荐阅读: