cve版签到wp
GKCTF之cve版签到wp
昨天最近一打比赛就是签到,内心极度崩溃,可能是忘的太了,所以尽可能写的详细下,供以后参考学习。
如有不足,还请诸位师傅帮忙指正,不胜感激。
PS:感谢各位师傅的wp,使我这个菜鸡又学到了不少(如果可能解释你们wp为什么这么写就好,有时候小白真的不懂)
过来复现的时候题目已经出现了Hint,发现给的是一个CVE,所以问下度娘先。
度娘说:
接着我们可以看到,这是漏洞的形成来自于’get_headers()‘函数,可以造成信息泄露
接着我们搜索下这个函数是怎么利用的
通过上图,我们可以知道我们可以通过get方式传参,在目标要跳转到地址中使用 本地加%00截断 的格式如:
?url=http://www.xmoct.cn //目标想去的站点
localhost\0 //我们插入的截断语句
?url= //最终构成的语句
当我们的语句是通过get_header()函数接收时,就会造成被\0截断,而之后的部分不再读取,也就是图片中所介绍的get_headers()期望参数1为有效路径
?url= //目标服务器所解析的语句
即然我们已经知道了这个CVE怎么用了,那我们就赶紧去试试吧,打开题目,可以看到如下界面
可以看到下面说目标请求中必须带有.ctfhub.com的字样,这正好满足之前所获取到利用条件,所以构造语句
?url=http://localhost\0.ctfhub.com //我们初次构造的语句
呀!!!发现出错了,目标没有回显,这。。这,没事不能用完全在意料之中
#学过计算机基础的应该了解有些情况下 localhost 是等同于127.0.0.1的,所以
?url=http://127.0.0.1\0.ctfhub.com //再次构造
(⊙﹏⊙),又不行,这也太》》》不过没事,本人还有招:通过观察我们可以看到\0这里也是可以修改的,召唤度娘
这里我们可以知道\0是被当作数据被提交了,所以无法作出截断效果,但是我们还知道
\0还可以用%00表示,所以再次构造
/?url= //再错了就没招了
aha,终于出来了,差点以为又扑街(lll¬ω¬),然后通过观察回显发现
[4] => Tips: Host must be end with '123' //[4] =>技巧:主机必须以“ 123”结尾
所以我们在原有的基础上再次构造
?url=http://127.0.0.123%00.ctfhub.com //flag我来了
此时我们就拿到flag了
[4] => FLAG: flag{9060e62f-94a2-4bd6-96d1-17d2009ab8d0}
收工,回去吃早点O(∩_∩)O