XXE读取文件 Geek10th

点开网站:
在这里插入图片描述
抓包,修改属性:
在这里插入图片描述
返回了这么一串:
在这里插入图片描述
由于是$name==md5(),由弱类型比较和md5想到了md5碰撞,由于PHP的弱比较造成它会将oe开头的md5(字符)解析成科学计数法(数字),于是我们开始爆破。
在这里插入图片描述
值得注意的是,我们要将引号也包括进去,因为在json编码中,"0"为字符串,0为数字。
在这里插入图片描述
爆破完成,看到了
在这里插入图片描述
知道了文件名和位置之后,加上提示的xxe,接下来就是重头戏了。

在参考了大佬的文章之后,我对XXE有了一点了解,这里我们使用的是最简单的一种。
主要在这里
关键在这里,我们看到,实体被当作了一个变量来调用,我对<user>&xxe;</user>xxe的理解是,它相当于函数的调用,而上面<!ELEMENT xxe "test">相当于函数的定义。于是,我们可以改变“函数”内容来实现对于文件的操作。
就像这样
这里,我们不再是xxe替换成test,而是将file:///c:/test.dtd当作系统命令执行,以此来读取系统中的文件。

在这题里,我只要把这里的file协议替换一下就行了,这里,我们使用php伪协议来读取文件内容。
在这里插入图片描述
将base64解码就是flag。




第一次认识了XXE,对json也有了一些了解,学到很多新知识。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值