[SWPU2019]Web3
[SWPU2019]Web3
考点
Flask session伪造
Linux命令
ln命令新建"快捷方式"
wp
标题flask-demo提示是个flask的框架
随便输入用户名和密码可以登录,然后回显用户名,这里可能有SSTI

点击upload提示Permission denied!,要进行flask session伪造,先试试SSTI,用户名输入{{7*7}}原样返回

只能想其他办法获取secret_key,发现在404页面的返回头存在Swpuctf_csrf_token,为U0VDUkVUX0tFWTprZXlxcXF3d3dlZWUhQCMkJV4mKg==

解码后为SECRET_KEY:keyqqqwwweee!@#$%^&*,然后重新加密session,内容是{'id': b'1', 'is_login': True, 'password': '111', 'username': 'admin'}
得到eyJpZCI6eyIgYiI6Ik1RPT0ifSwiaXNfbG9naW4iOnRydWUsInBhc3N3b3JkIjoiMTExIiwidXNlcm5hbWUiOiJhZG1pbiJ9.Ymz6jQ.Hk-k8PvafeNbp8uRfcuWnWVjJhA
修改cookie可以访问/upload页面
在注释中找到代码
session中的username为admin,password为111。
那这段代码就在说,先根据session中的username和password,以及IP地址生成上传目录,然后上传一个zip压缩包,对其进行解压,解压的文件名不能包含/,获得的第一个文件以图片形式展示。在showflag()中说明了flag的位置,但是不知道绝对路径。
如果使用ln -s /proc/self/cwd/flag/flag.jpg test新建一个指向flag的链接,再用zip压缩test文件,是不是就可以访问flag了,但是如果直接压缩不会保存连接符,要用zip -y参数
所以本题就是
ln -s /proc/self/cwd/flag/flag.jpg testzip -ry test.zip test
再上传即可

小结
Linux下
/proc/self/cwd/会指向进程的当前目录ln -s /etc/passwd test相当于新建一个链接到/etc/passwd的文件test,对test使用cat等命令会自动指向/etc/passwd
最后更新于