Bugku---web---速度要快

粉车绿衣搞笑网工女 2024-08-26 16:33:02 阅读 68

 题目出处:首页 - Bugku CTF


 

✨打开链接,看到如下界面!!!

✨没有什么想法后直接抓包!!!

✨看到Cookie,像是一串加密的字符串,下面进行解密!!!发现不是一个加密字符串,所以查询cookie这个关键字的作用后发现!!!

Cookie: 这是一个HTTP头字段的名称,用于在客户端(如浏览器)和服务器之间传递小块数据。这些数据通常用于识别用户、跟踪会话或存储用户首选项。PHPSESSID: 这是Cookie的名称。在PHP中,当您开始一个会话(使用<code>session_start()函数)时,PHP通常会设置一个名为PHPSESSID的Cookie(除非您更改了默认的会话名称)。这个Cookie的值(在这里是pqhqpqo2eblephf91j7vk83203)是一个会话标识符,用于唯一地标识一个会话。pqhqpqo2eblephf91j7vk83203: 这是PHPSESSID Cookie的值,是一个随机生成的字符串。这个值用于在服务器上识别特定的用户会话。当用户在多个页面之间导航时,浏览器会发送这个Cookie,以便服务器能够识别用户并恢复他们的会话状态(例如,他们登录的用户名、购物车中的物品等)。

✨将此消息发送给服务器查看所给的响应是什么!!!

✨发现里面有flag,但是是一种编码形式,下面是解密过程!!!

✨结果不是正确答案,再试着解码一次!!!

✨还是不行,回头看看!!!

✨说到一段英语,大概是要提交你的margin值,根据前面所写的步骤,margin的值显然就是你解码后得到的数字!!!

✨关键来了,快速给系统给定margin的值还是没有任何结果,只能换一种解题思路了,写python脚本,将其逼出原形!!!

✨这是python脚本,运行后即可得到flag的值!!!(下面我展示的网址是又一次打开的环境,故与前述略有不同,但无影响)

<code>import requests //导出requestes模块

import base64 //导出base64模块进行解码

url="http://114.67.175.224:13636" //将url这个变量定义成我们要访问我网址code>

s=requests.session() //导出session模块并赋值给s;因为网页是动态的

r1=s.get(url) //用session模块想url定义的这个网站发出一个get请求,并且赋值给r1

decoded_flag = base64.b64decode(r1.headers['flag']).decode('utf-8')

flag1= decoded_flag.split(":")[1] //base64对r1响应头中的flag进行解码并且赋值给flag1

flag2= base64.b64decode(flag1) //因为解码没有彻底所以对flag1进行二次解码;并且赋值给flag2

data={'margin':flag2} //就是把解好码的flag2定义给margin;再将整体赋值给data

r2=s.post(url,data=data) //通过session向url定义的网站进行post请求,上传刚刚定义好的data

print(r2.text) //然后输出r2的网页显示内容

 

✨这是第二种python运行脚本的方法,但是两者差不多,我认为第二种更为简便!!!

<code># 导入requests库和base64库

import requests

import base64

# 定义目标URL

url = "http://114.67.175.224:11910"

# 创建一个requests.Session对象,用于保持会话状态

req = requests.Session()

# 使用Session对象的get方法向URL发起GET请求,并将响应存储在res变量中

res = req.get(url)

# 从响应头中获取名为'flag'的值,该值是一个经过两次base64编码的字符串

encoded_flag = res.headers['flag']

# 使用base64库的b64decode方法对编码后的字符串进行解码,得到原始的flag

decoded_flag = base64.b64decode(base64.b64decode(encoded_flag).decode().split(':')[1])

# 打印解码后的flag

print(decoded_flag)

# 创建一个字典d,其中包含键'margin'和值解码后的flag

d = {'margin': decoded_flag}

# 使用Session对象的post方法向URL发起POST请求,传递字典d作为数据,并将响应内容打印出来

print(req.post(url, data=d).text)

 

✨总结!!!

       Cookie是一种存储在用户浏览器中的小文件,用于保持服务器与客户端之间的状态。当你看到一个特定的Cookie值,如PHPSESSID,这通常表示服务器使用这个Cookie来跟踪用户的会话或认证状态。       

       当你遇到这样的Cookie信息时,它通常意味着你需要编写一个Python脚本来模拟浏览器的行为,以便与服务器进行交互并获取flag。

       在这种情况下,你可以使用Python的requests库来发送HTTP请求,并在请求中包含这个Cookie。通过这种方式,你可以模拟登录或访问受保护的资源,从而找到flag。

为什么使用Python脚本进行交互?

自动化任务:Python脚本可以帮助你自动化与服务器的交互过程,例如发送请求、处理响应等。

处理Cookie:你可以使用Python脚本来管理Cookie,包括存储、修改和传递Cookie给服务器。

解析响应:服务器的响应通常是HTML、JSON或其他格式的数据。Python有强大的库(如BeautifulSoup、json等)来解析这些数据。

绕过限制:有时候,服务器可能会对某些请求有限制,例如需要登录才能访问的内容。通过Python脚本,你可以模拟登录并保留登录状态,从而绕过这些限制。

多线程或异步请求:Python可以方便地进行多线程或异步请求,提高与服务器交互的效率。

.................它的作用还有很多,有兴趣的可以深入探究学习。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。