-
-
[原创]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直播授课
赞赏
- [原创]Brute Ratel C4 Keygen 15828
- [原创]KCTF 2022春季赛 第九题 同归于尽 6525
- [原创]KCTF 2022春季赛 第四题 飞蛾扑火 4114
- [原创]KCTF 2021秋季赛 第九题 万事俱备 20745
- [原创]KCTF 2021秋季赛 第七题 声名远扬 20278