GKCTF2020-cve版签到
1. 提示
2. CVE-2020-7066漏洞
1 | get_headers()会在使用的URL中的空字节之后无声地截断任何内容。 |
描述
PHP 7.2.29之前的7.2.x版本、7.3.16之前的7.3.x版本和7.4.4之前的7.4.x版本中的‘get_headers()
’函数存在安全漏洞。攻击者可利用该漏洞造成信息泄露。
get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。 如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。
在低于7.2.29的PHP版本7.2.x,低于7.3.16的7.3.x和低于7.4.4的7.4.x中,将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则URL将被静默地截断。这可能会导致某些软件对get_headers()的目标做出错误的假设,并可能将某些信息发送到错误的服务器。
3. 解题
首页:
burp抓包看包
提示flag在localhost中,但是host得以123结尾
点击链接:
1 | ?url=http://www.ctfhub.com 是很类似CSRF |
既然这里是一个csrf,思路应该是构造csrf让服务器去请求自己获得flag。但是这里利用正则表达式让我们请求的url只能以.ctfhub.com结尾。
这里就运用到的我们的CVE了,其实就是get_header()的CVE。这个函数特点就是会去请求url并返回header头部。但是CVE告诉我们,如果是用%00截断,就可能让命令去请求用户的可控网址。
所以构造payload
1 | ?url=http://127.0.0.123%00www.ctfhub.com |