首页
社区
课程
招聘
[原创]KCTF 2022春季赛 第四题 飞蛾扑火
发表于: 2022-5-16 23:09 4113

[原创]KCTF 2022春季赛 第四题 飞蛾扑火

2022-5-16 23:09
4113

简单分析

周末饭后,打开网站,查看html源码如下:

1
<img src="url.php?url=https://ctf.pediy.com/upload/team/762/team236762.png">

url.php可以加载网站,换个地址提示"host not allow",很明显用了白名单。

 

尝试127.0.0.1,提示not found,说明可访问本地,于是用file://配合burp爆破目录,找到file://127.0.0.1/../../../../../etc/passwd。

 

看了一圈docker信息,pid/uid/status,找到web目录,没找到突破口,后面才看到注释里写了phpinfo.php,眼神不好...

 

根据phpinfo找到网站目录:/var/www/html,拿到url.php源码,完成第一步。

陷入僵局

源码提示:

1
//echo curl_request("http://123.57.254.42/flag.php","get",[],true,5);//get flag

请求提示error ip,说明得通过ssrf去请求。

 

现场学习《SSRF-Exploiting-URL》,slide里提示了利用php的parse_url和curl解析不一致来实现绕过。例如:http://@{curl_host}@{php_host}/flag.php,试了几次不行,但又看不到错误。

 

于是把php包下载下来,开启curl extension,修改代码把curl的错误信息打出来:php.exe test.php,调试输出各种信息,最后确定这个bug已经修复。

 

尝试绕过伪造IP也不行,暂时陷入僵局...

神秘代码

周末这大好天气不能浪费了,出去逛一圈...
..........
..........
..........
回来后,继续思考:

1
坚信这个curl一定存在某个神秘bug...

于是从phpinfo拿到curl版本,google搜索神秘代码:

1
curl 7.64.0 parse_url

找到https://hackerone.com/reports/1049624,看来这个版本真存在问题(解析scheme时),本地调试curl 7.64.0 确认解析host通过后,请求服务端拿到flag:

1
2
url.php?url=123.57.254.42://127.0.0.1/../flag.php
flag{xxx_999()xx*@eeEEE}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
// // 统计代码