Signin
审视源码发现过滤了 ['/', 'convert', 'base', 'text', 'plain']。
由 GET 参数 file 进行文件包含(当 file 长度小于等于 20 时)。
可以使用 data 协议进行文件上传包含,但 // 被 ban,所以可以用短符号简写绕过:data;,。由于 include 具有解析上传文件的特性,能把上传的文件当作 php 代码识别,故可以构造 payload:
?file=data:,<?phpinfo();?>
phpinfo 显示 short_open_tag=On,所以可以用短标签减少字数。
随后构建一句话木马。原本是 <?=eval($_GET[x]); 这样的,但是长度超 20 了。
查阅资料得知反引号是 shell_exec() 的语法糖,即 `$$_GET[0]` === shell_exec($_GET[0])。
(题目不支持 POST 传参)
最终 payload:
?file=data:,<?=`${$_GET[x]}`;&x=cat /flag
得到 flag。

渗透测试
题目是一个登录框,给了一个密码附件,需要爆破密码,一共两万个密码。
Burp suite 抓包发现上传的参数被加密了,直接 intruder 爆破不现实,因此编写 Python 脚本模拟键盘输入逐个爆破密码,用户名为 admin。
经多机并行运行获取密码为:5V26s9dBZQVBZgyyVC00baeW。

Markdown2world
尝试上传其他后缀文件,提示只能上传 .md 或 .markdown 后缀的文件,于是只能在 Pandoc 机制、转换机制和不同类型文件的特性中研究。
题目提示了相关配置。
查阅资料发现可尝试 Template 模板注入,构造 payload:
---
template: /flag
---
xxxxxxxxx
上传后被拦截,template 和 reference-doc 被过滤,pdf 文件无法上传。只能尝试通过资源文件引用 + EPUB 打包机制进行任意文件读取,或通过文件名注入命令。
首先查看上传后文件名会被重新修改,上传 无效。






