19届ciscn复盘
MediaDrive
这个库吃库吃修了三个点
有师傅就改了utf-8就过了
1
很明显的

看看user.php

有魔术函数 但是很少 关于cookie也没什么waf 但是存在打原生类的可能
这个反序列化需要修一下
if (isset($_COOKIE['user'])) {
$user = unserialize($_COOKIE['user'], ["allowed_classes" => false]);
}
// 将所有的对象都转换为 __PHP_Incomplete_Class 对象
2


这里黑名单不够 file_get_contents(),没有路径规范化

这里还可以
但是waf没有 还是补一个

酱紫 白名单

download一个超级黑名单也行
两边都上了
MediaDrive 攻击
赛场上想到的是 cookie反序列化加上编码转译漏洞进行目录穿越,但是编码这块!!
GBK编码特定字节序列不知道怎么对应上utf-8
其实人家用utf-十六进制也能过

入口
当时赛场上想到的就是反序列化加上编码绕过

只用到这一个类 那咋办呢
$convertedPath = @iconv($user->encoding, "UTF-8//IGNORE", $rawPath);
会将转换失败的符号直接忽略掉
flag插入utf8不可见字符
%df 是非法 UTF-8 字符

easy_time

先发现这里有一个cookie的伪造
session.cookies.set("visited", "yes")
session.cookies.set("user", "admin")
修复就是这里要用session函数去接受这个cookie
然后看到了文件上传 感觉zip文件名没啥过滤
def safe_upload(zip_path: Path, dest_dir: Path) -> list[str]:
with zipfile.ZipFile(zip_path, 'r') as z: # 打开 zip
for info in z.infolist(): # 遍历所有项
target = os.path.join(dest_dir, info.filename) # 直接拼接路径
if info.is_dir(): # 如果是目录 → 创建
os.makedirs(target, exist_ok=True)
else: # 如果是文件 → 写入
os.makedirs(os.path.dirname(target), exist_ok=True)
with open(target, 'wb') as f:
f.write(z.read(info.filename)) # 直接读取写入
这里文件上传没waf 可以通过命名zip内部文件执行目录穿越等(zip套装
这里需要限制zip的符号,数量,大小,禁止绝对路径

这里url可控 也没见着过滤 ssrf

跳转
但是对于next_url没有过滤 可以构造攻击url访问外部网站
需要用pkill单杀一个index.py进程(可能是我们服务异常的原因之一??
综合渗透
3
工具一把梭
哥斯拉连接获得1
第二层cve提权msf拿root权限
当时试过suid 看到有文件了但是利用失败了(
其他两个渗透不太懂怎么打点进去
混乱中在内网通把自己的笔记全部丢出去了队友应该人手一份我的渗透小小笔记和web小笔记(为了比赛整理的minimini版本
嗯嗯工具使用要多操作多熟悉,分数手慢无
有个awdp可以删除flag就过了,甜菜
pwn队友修复一直服务异常┭┮﹏┭┮
中午辣椒炒肉好吃可惜没吃几口

浙公网安备 33010602011771号