运维开发网

sniperoj的baby-ssrf wp

运维开发网 https://www.qedev.com 2020-07-15 14:11 出处:网络 作者:运维开发网整理
0x00:题目介绍 sniperoj是王一航大佬出的ctf题目(题目是从他github上扒下来的,就先这么猜测了) https://github.com/SniperOJ/Jeopardy-Dockerfiles 0x01:题解 切到baby-ssrf路径下,docker-compose up -d,访问127.0.0.1:10015 得到题目如下 1 <?php 2 3 /* 4 * I st

0x00:题目介绍

sniperoj是王一航大佬出的ctf题目(题目是从他github上扒下来的,就先这么猜测了)

https://github.com/SniperOJ/Jeopardy-Dockerfiles

0x01:题解

切到baby-ssrf路径下,docker-compose up -d,访问127.0.0.1:10015

得到题目如下

 1 <?php  2  3 /*  4  * I stored flag.txt at baidu.com  5 */  6  7 show_source(__FILE__);  8  9 if(isset($_GET[‘url‘])){ 10 $url = parse_url($_GET[‘url‘]); 11 if(!$url){ 12 die(‘Can not parse url: ‘.$_GET[‘url‘]); 13  } 14 if(substr($_GET[‘url‘], strlen(‘http://‘), strlen(‘baidu.com‘)) === ‘baidu.com‘){ 15 die(‘Hey, papi, you have to bypass this!‘); 16  } 17 if( 18 $url[‘host‘] === ‘baidu.com‘ 19  ){ 20 $ch = curl_init(); 21 curl_setopt ($ch, CURLOPT_URL, $_GET[‘url‘]); 22 curl_exec($ch); 23 curl_close($ch); 24 }else{ 25 die(‘Save it, hacker!‘); 26  } 27 }

题目说baidu.com下有个flag.txt,那我们主要目的是拿到这个flag.txt

题目名字肯定是ssrf入口啦

再来看一下代码,涉及到了ssrf漏洞的利用代码curl_exec。

确定ssrf读文件无疑了

需要注意几个函数

parse_url:php解析url的函数

$url = ‘http://username:[email protected]/path?arg=value#anchor‘; print_r(parse_url($url)); Array ( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor )

还需要注意这里

if(substr($_GET[‘url‘], strlen(‘http://‘), strlen(‘baidu.com‘)) === ‘baidu.com‘)

substr截取字符串函数,截取url的第七位后面的9位,如果是baidu.com那就不符合

所以我们可以通过@符号来绕过:@baidu.com,这样截取的就不是baidu.com,但解析仍然是baidu.com,@多用于url跳转漏洞。

因为是读取文件,我们用file://

所以最终payload:url=file://@baidu.com/flag.txt

sniperoj的baby-ssrf wp

 

 

0x02:小结

ssrf这个漏洞平时做渗透遇到的不多(也可能自己太菜了,漏了也说不定 emmm)

但仔细一想 这个漏洞多发生于需要处理图片,处理url等等

涉及函数file_open、curl_exec、file_get_contents等等,想想日常测得网站系统也很少涉及这些,毕竟都是以业务为主。

ssrf原理网上很多相关资料,不多赘述,就是让服务器帮你请求,多用于探测内网、攻击内网。

这道题目不难,巩固一下ssrf的利用嘛。

想写一下ssrf配合dnslog的相关题目,有朋友可以推荐一下吗,有类似的题目吗 嘻嘻 感激~

0

精彩评论

暂无评论...
验证码 换一张
取 消