CTFshow 菜狗杯之 抽老婆解题思路和流程

27 篇文章 0 订阅
27 篇文章 0 订阅

拿到题目,首先观察页面有没有提示,经过观察页面和生成的图片,发现并没有可疑之处。那么该题考察的点应该不在于图片方面。那么按住F12,查看源代码,第一个页面并无可以之处。但是第二个页面中,发现可疑链接  download/file=xxxxx.jpg,此时以其为切入点进行测试:

直接输入flag作为参数查看,发现并未获得flag值

那么随便输入一张不存在的图片,查看是否能够获得更多信息,可以看到页面使用了app.py文件,此时我们可以考虑将其下载到本地:

这里我直接复制文件路径,发现报错路径不存在。观察报错路径发现页面使用了路径的拼接。

那么我改用相对路径进行测试:

看到文件已经被成功下载:

打开文件,并分析源代码:

可以看到针对不同的输入路径,app.py文件调用了不同的函数。

如果路径为 “/” ,使用index函数

如果路径为"/getwifi",使用getwifi()函数

...

通过分析代码得知,我们想要获得flag值,就需要运行getflag()函数,那么此时我们需要将路径设置为"secret_path_U_never_know"

但是直接输入该路径不会输出flag值

这是因为getflag函数中有一个判断:

if session['isadmin']:
        return jsonify({"msg":flag})

这句话要求我们的session["isadmin"]值为True,那么我们可以考虑使用bp抓包并修改session的值:

为了构造session的值,我们使用了工具 flask-session-cookie-manager-master(该工具在git上可以直接下载) session生成过程中的秘钥在app.py文件中可以看到:

那么我们的session可以直接以'tanji_is_A_boy_Yooooooooooooooooooooo!' 为秘钥,以"{'isadmin': True}"为字典进行构造:

在命令提示行中输入:

python flask_session_cookie_manager3.py encode -s "tanji_is_A_boy_Yooooooooooooooooooooo!" -t "{'isadmin': True}"
则可以生成session的值:eyJpc2FkbWluIjp0cnVlfQ.ZmufEg.vF6jyYAmenDHHQ6L9EyqeaYZqTM

然后使用生成的session值构造Cookie,然后在发包,则可以看到response中返回了flag的值:

 "ctfshow{aa30a3e1-f93e-4c60-9bfa-b3285e879d6b}"

(Content是在发包完成后自动生成的,我只添加了一行信息:

Cookie:session=eyJpc2FkbWluIjp0cnVlfQ.ZmufEg.vF6jyYAmenDHHQ6L9EyqeaYZqTM

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值