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)

相关推荐
学逆向的3 小时前
C++ 合并命名空间
开发语言·c++·网络安全
学逆向的4 小时前
C 局部静态变量
c语言·开发语言·网络安全
杭州默安科技8 小时前
从“被动响应”到“主动遏制”:AI Agent时代,网络防御体系如何重构?
人工智能·网络安全·ai智能体
砚凝霜9 小时前
[CTF Misc 图片隐写] misc1:文件末尾追加 flag(strings 一秒出 flag,附原理)
网络安全
Gnevergiveup10 小时前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全
白帽攻防录11 小时前
某pc客户端app从xss到rce实战案例
前端·网络安全·黑客·xss·rce·src漏洞·app漏洞
是真的小外套13 小时前
网络安全实战第6期:Hydra爆破SSH实战
安全·web安全·ssh
是真的小外套14 小时前
网络安全实战第5期:Wireshark抓明文密码
安全·web安全·wireshark
学网安的肆伍14 小时前
认证机制攻防学习|PortSwigger Authentication 靶场复现总结(二):用户名枚举进阶
学习·web安全·网络安全·burpsuite·portswigger·认证安全·靶场复现
网络小江14 小时前
组网第41课:ACL 门禁——标准/扩展、规则顺序、time-range、in/out 方向
运维·网络安全·acl·访问列表·in/out