CTF自学-SSRF(3)

URL Bypass

看到网页提示url必须以特定网址开头,如果在index.php中除了检查url开头外不做任何检查,用curl直接访问这个url,那可以使用如下原理绕过:

html 复制代码
scheme://userInfo@host:port/path?query#fragment

这是一个完整的url格式,其中@前面为可选项,填写用户信息(用户名,密码等),@后面填写的才是通常url中用到的文件路径,通常访问一个url都是用不到用户信息的,所以不用填写@以及前面的部分,这里为了做绕过,可以在http://notfound.ctfhub.com后面直接加@真正要访问的文件路径,这样服务器会忽略@前面的部分,直接访问后面的文件。

数字IP Bypass

利用进制转换绕过,这里选用16进制绕过

127.0.0.1 -> 0x7f.0x0.0x0.0x1 或者 0x7f000001

302跳转 Bypass

由前面的题目对index.php源码的分析可知curl中开启了跟踪跳转,所以让其访问一个具有跳转效果的网页即可,这里我再利用本地的服务器完成跳转。

通过如下页面实现跳转

顺带一提这题用IP Bypass依然有效

附上本题index.php源码

复制代码
<?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);

DNS重绑定 Bypass

Domain Name System即域名系统,提供域名到IP地址的转换的服务器即DNS服务器。如果一台服务器信任一台DNS服务器,只在第一次查询一个新域名时检查DNS返回的ip是否合法,我们就可以利用DNS重绑定攻击,第一次查询域名时返回合法IP,此后再次查询时返回非法IP(如127.0.0.1)。

访问该网页可以直接实现DNS重绑定(这里)。如图所示,在下面分别输入我们需要访问的IP和一个合法IP,该然后当我们查询下面的域名时,该DNS服务器就会在两个IP之间来回横跳。

将两个IP设置好后,把下面的域名拷贝到题目中跳转的URL后面,并记得补全路径

这样就成功实现了DNS重绑定

另外,本题依然可以用16进制(0x7f000001)绕过,不过不支持点分16进制(0x7f.0x0.0x0.0x1)

相关推荐
独行soc2 小时前
2026年渗透测试面试题总结-10(题目+回答)
android·网络·python·安全·web安全·渗透测试·安全狮
海星船长丶2 小时前
预编译与sql注入,正则回溯绕过,mysql常见绕过,报错注入7大常用函数
服务器·数据库·sql·mysql·网络安全
内心如初2 小时前
14_等保系列之安全管理体系建设思路
网络安全·等保测评·等保测评从0-1·等保测评笔记
运筹vivo@2 小时前
BUUCTF: [极客大挑战 2019]Upload
前端·web安全·php·ctf
运筹vivo@2 小时前
攻防世界: easyupload
前端·web安全·php·ctf
十月南城3 小时前
高可用的三件事——无状态化、水平扩展与故障转移的协同设计
运维·web安全·微服务·云计算·xss
运筹vivo@3 小时前
BUUCTF: [极客大挑战 2019]BabySQL
前端·web安全·php·ctf
米羊12113 小时前
Linux 内核漏洞提权
网络·安全·web安全
运维行者_14 小时前
2026 技术升级,OpManager 新增 AI 网络拓扑与带宽预测功能
运维·网络·数据库·人工智能·安全·web安全·自动化