polar2026春季个人挑战赛(中等部分)

杰尼龟系统

蛮简单的,我还以为还要更难一点

一点过滤没有

好吧还是有点的

根目录下的是假的

Signed_Too_Weak

登录之后告诉我们是普通用户

可以发现这题考的是jwt

我们改一下令牌

应该是要密钥

jwt_tool进行爆破

复制代码
python jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNzc1MDA5ODkyLCJleHAiOjE3NzUwMTM0OTJ9.k_ie_pwN7oud99bERRMgmty87Vfz8lrswlMg23mkZMY -C -d "你的jwt_tool路径"

成功获取flag

static

复制代码
<?php
    highlight_file(__FILE__);
    error_reporting(E_ALL);
    
    function hard_filter(&$file) {
        $ban_extend = array("php://", "zip://", "data://", "%2f", "%00", "\\");
#PHP 伪协议(如 php://filter 编码读取文件)或截断字符(%00)
#同时也屏蔽了反斜杠 \ 和 URL 编码的斜杠 %2f
        foreach ($ban_extend as $ban) {
            if (stristr($file, $ban)) {
                return false;
            }
        }

        $ban_keywords = array("eval", "system", "exec", "passthru", "shell_exec", "assert", "../");
        foreach ($ban_keywords as $keyword) {
            if (stristr($file, $keyword)) {
                $count = 0;
                $file = str_replace($keyword, "", $file, $count); 
#常见的"黑名单过滤且替换为空"
#由于有 break,该循环只会处理它遇到的第一个匹配到的关键词
#输入 ....//,当中间的 ../ 被替换为空后,剩下的部分会重新组合成 ../
                break;
            }
        }
        
        $file = rtrim($file, '/');
        if (strpos($file, "static/") !== 0) {
            return false;
        }
    #所有输入必须从 static/ 目录开始
        return true;
    }

    $file = $_GET['file'] ?? '';
    if (!hard_filter($file)) {
        die("Illegal request!");
    }
    
    $real_file = $file . ".php";
    $real_path = realpath($real_file) ?: $real_file;
    
    echo "<br>=== 调试信息 ===<br>";
    echo "1. 原始输入: " . htmlspecialchars($_GET['file'] ?? '') . "<br>";
    echo "2. 过滤后file: " . htmlspecialchars($file) . "<br>";
    echo "3. 拼接后的路径: " . htmlspecialchars($real_file) . "<br>";
    echo "4. 真实解析路径: " . htmlspecialchars($real_path) . "<br>";
    echo "5. 文件是否存在: " . (file_exists($real_path) ? "是" : "否") . "<br>";
    
    if (file_exists($real_path)) {
        echo "6. 正在包含文件...<br>";
        ob_start();
        include($real_path);
        $content = ob_get_clean();
        echo "7. 文件内容: " . htmlspecialchars($content) . "<br>";
    } else {
        echo "6. 错误:文件不存在!<br>";
    }
?>
PHP 文件包含漏洞

Pandora Box

上传一个zip文件为jpg后缀

可以看到已经成功为php文件

成功执行

成功获取flag

云中来信

这个页面我们可以看到这是一个ssrf请求伪造漏洞

测试回环地址

查看源码发现有源码泄露

但是没什么用

我们根据题目名和漏洞推测

https://blog.csdn.net/weixin_39190897/article/details/136049642

SSRF漏洞给云服务元数据带来的安全威胁,正好对应了我们的推测

发起对目标地址/latest/meta-data的请求,如果能够请求成功,则认定可以发起攻击。

这个请求成功,包括状态码5XX,都认为请求成功。

需要有效的元数据令牌。请先访问 /latest/api/token 获取token,并在请求头 X-IMDS-Token 中携带。

我们来进行访问

进行替换

再次进行访问,得到一个路径进行访问

成功获取flag

相关推荐
-SOLO-9 小时前
Android Event 日志完全指南
android
壮哥_icon10 小时前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化
千里马学框架10 小时前
Android Framework 新手学习踩坑建议指南
android·智能手机·性能优化·framework·aaos·车载开发·系统工程师
我命由我1234512 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
狂奔solar13 小时前
ARMA 模型:从白噪声到万能逼近器
android
渣渣灰飞14 小时前
MySQL 系统学习 第五阶段:企业级 MySQL 实战开发 第二章:RBAC 权限系统设计
android·学习·mysql
qq_4228286214 小时前
android 图形学之图层数据送显及合成图层(七)
android
MiyamuraMiyako15 小时前
Compose:从自动滚动到双锚点 LazyLayout
android·android jetpack
用户634214199350717 小时前
base_logger_core --- 跨平台 C++ 日志核心库
android
苦瓜花17 小时前
【Kotlin】初入门
android·开发语言·kotlin