题目出处:首页 - Bugku CTF
✨打开链接,看到如下界面!!!
✨没有什么想法后直接抓包!!!
✨看到Cookie,像是一串加密的字符串,下面进行解密!!!发现不是一个加密字符串,所以查询cookie这个关键字的作用后发现!!!
- Cookie: 这是一个HTTP头字段的名称,用于在客户端(如浏览器)和服务器之间传递小块数据。这些数据通常用于识别用户、跟踪会话或存储用户首选项。
- PHPSESSID: 这是Cookie的名称。在PHP中,当您开始一个会话(使用
session_start()
函数)时,PHP通常会设置一个名为PHPSESSID
的Cookie(除非您更改了默认的会话名称)。这个Cookie的值(在这里是pqhqpqo2eblephf91j7vk83203
)是一个会话标识符,用于唯一地标识一个会话。- pqhqpqo2eblephf91j7vk83203: 这是
PHPSESSID
Cookie的值,是一个随机生成的字符串。这个值用于在服务器上识别特定的用户会话。当用户在多个页面之间导航时,浏览器会发送这个Cookie,以便服务器能够识别用户并恢复他们的会话状态(例如,他们登录的用户名、购物车中的物品等)。
✨将此消息发送给服务器查看所给的响应是什么!!!
✨发现里面有flag,但是是一种编码形式,下面是解密过程!!!
✨结果不是正确答案,再试着解码一次!!!
✨还是不行,回头看看!!!
✨说到一段英语,大概是要提交你的margin值,根据前面所写的步骤,margin的值显然就是你解码后得到的数字!!!
✨关键来了,快速给系统给定margin的值还是没有任何结果,只能换一种解题思路了,写python脚本,将其逼出原形!!!
✨这是python脚本,运行后即可得到flag的值!!!(下面我展示的网址是又一次打开的环境,故与前述略有不同,但无影响)
import requests //导出requestes模块
import base64 //导出base64模块进行解码
url="http://114.67.175.224:13636" //将url这个变量定义成我们要访问我网址
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运行脚本的方法,但是两者差不多,我认为第二种更为简便!!!
# 导入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可以方便地进行多线程或异步请求,提高与服务器交互的效率。
- .................它的作用还有很多,有兴趣的可以深入探究学习。
版权归原作者 粉车绿衣搞笑网工女 所有, 如有侵权,请联系我们删除。