[PASECA 2019]honey_shop

[PASECA 2019]honey_shop

进入题目,可以看到初始自己的卡中有1336元,下面有各种商品,其中的flag价格是1337,不够钱。

image-20220531165800218

这时候我一般有两种思路,要不是通过购买特定数量的其他商品造成整数溢出漏洞,但是这题并不是这样,查看cookie:

eyJiYWxhbmNlIjoxMzM2LCJwdXJjaGFzZXMiOltdfQ.YpYlCA.iq7NDjHCNbBAWCzEOrTDlSgiEj8

尝试使用flask_session_cookie_manager 解密:

python .\flask_session_cookie_manager3.py decode -c eyJiYWxhbmNlIjoxMzM2LCJwdXJjaGFzZXMiOltdfQ.YpYlCA.iq7NDjHCNbBAWCzEOrTDlSgiEj8
image-20220531222528991

可以看到session中保存的balance代表当前的金钱,所以我们就需要想办法伪造session,既然要伪造session,就需要拿到密钥SECRET_KEY。

任意文件下载

我们发现,当点击主页的图片时,会自动下载文件:

image-20220531222912418

尝试目录穿越读取敏感文件:

image-20220531223037352

可见存在任意文件读取漏洞,那我们可以通过这里读取 /proc/self/environ,查看当前进程Python的环境变量:

image-20220531223127478

成功获取到了SECRET_KEY=7ZAPIiEn8TkA2uKmkbUqrEijSaCjAXpFIUXKWrd3,然后我们就可以伪造flask session了。

伪造flask session

利用获取到的SECRET_KEY使用flask_session_cookie_manager 伪造session:

python .\flask_session_cookie_manager3.py encode -s "7ZAPIiEn8TkA2uKmkbUqrEijSaCjAXpFIUXKWrd3" -t "{'balance':4000,'purchases':[]}"

得到:

eyJiYWxhbmNlIjo0MDAwLCJwdXJjaGFzZXMiOltdfQ.YpYntQ.j-SDjFN8oWsKH9iF9KKS9BNSg7E

修改cookie的值后刷新,可见当前金额变为设定好的值,成功买到flag。

image-20220531224136775

参考资料

Proc 目录在 CTF 中的利用

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇