[watevrCTF-2019]Supercalc
1.查看后就只有一个计算界面,盲猜ssti发现不行,几乎都有过滤。
2.抓包查看cookie发现session,解密后该值是我们历史计算的表达式,我们每执行一遍,历史代码都会记录在session中,并计算后返回到页面。虽然界面有waf不能执行代码,但是如果可以修改cookie的值,那不就可以绕过waf了。
3.接下来就是查找密钥,爆破是没用的,那就只能用页面的功能看看是否能读取密钥。查看wp后发现,只要在表达式后加个#
符,就能执行ssti,不过其他的依旧还是被过滤了,不过能访问{{config}}
,就能读取密钥为cded826a1e89925035cc05f0907855f7
。
4.再接下来就是伪造session了,先构造要执行的代码__import__("os").popen("cat flag.txt").read()
,然后利用脚本生成替换即可读取flag。
python flask_session_cookie_manager3.py encode -s 'cded826a1e89925035cc05f0907855f7' -t '{"history":[{"code":"__import__(\"os\").popen(\"cat flag.txt\").read()"}]}'
[BSidesCF 2019]Pick Tac Toe
1.点击页面查看cookie以为又是伪造,但是查看源码发现了隐藏表单,然后执行/move,尝试发送一个,发现是三子棋。
2.那段cookie毫无头绪,但是井字棋这方面还是很精通,试着下了两把,误打误撞赢了得到了flag。后面才发现原来AI下棋的值是存在覆盖的,可以直接覆盖掉ai下的坑位给连为一条直线。