【PHP】CVE-2020-7066

前言

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!本文仅用于学习与交流,不得用于非法用途!
照抄参考了Anonymous师傅的文章:https://blog.csdn.net/qq_45521281/article/details/106425266

get_headers()函数

get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。 如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。
语法:
array get_headers ( string $url [, int $format = 0 ] )

CVE-2020-7066

PHP 7.2.29之前的7.2.x版本、7.3.16之前的7.3.x版本和7.4.4之前的7.4.x版本中的get_headers()函数存在安全漏洞。攻击者可利用该漏洞造成信息泄露。
将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则URL将被静默地截断。
这个就是它函数可以触发CVE进行利用的点,为了更好的理解,附上一道CTF的题目流程

[GKCTF2020]cve版签到

打开题目
在这里插入图片描述
查看头部信息看到提示
在这里插入图片描述
可以看到PHP版本是7.3.15,还提示说host最后是123
非常符合该CVE漏洞的版本,先试试其它功能,看看有没有利用点
点一下View CTFHub
在这里插入图片描述
看到GET里面有url参数,后面跟着一个域名,输出的是一个数组,内容多半是url提交域名的头部,这个就是get_headers()函数的输出内容
看到这里就不难猜出是需要利用CVE来截断url的传参来绕过匹配,读取自己的头部来获得flag
首页这里有提示
在这里插入图片描述

说的是只能访问末尾是.ctfhub.com的url
那我们来构造payload
在这里插入图片描述

我们可以用%00来截断后面的.ctfhub.com,就可以绕过过滤访问自己的头
再根据提示把末尾改为123
在这里插入图片描述
获得flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值