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也有了一些了解,学到很多新知识。
发布了27 篇原创文章 · 获赞 1 · 访问量 815

猜你喜欢

转载自blog.csdn.net/weixin_44377940/article/details/103034098
xxe