【WEB】Polar靶场 6-10题 详细笔记

发布于:2025-07-05 ⋅ 阅读:(17) ⋅ 点赞:(0)

六.jwt

这题我又不会写

先来了解下jwt

**JWT(JSON Web Token)**是一种基于JSON的开放标准(RFC 7519),主要用于在网络应用环境间传递声明信息。JWT通常用于身份验证和信息交换,确保在各方之间安全地传输信息。一个JWT实际上是一个被编码的JSON字符串,包含了一系列声明。它由三部分组成:Header(头部)、Payload(载荷)[&和Signature(签名)&]。

JWT结构详解

Header(头部)

Header部分用于描述JWT的元数据,包括令牌的类型(JWT)和所使用的签名算法(如HMAC SHA256或RSA)。例如:

{

"typ": "JWT",

"alg": "HS256"

}

这个JSON对象会被Base64编码成字符串,形成JWT的第一部分。

Payload(载荷)

Payload部分存储要传输的信息,如用户的身份信息和一些声明。这里可以包含三种类型的声明:注册声明、公共声明和私有声明。例如:

{

"userId": "b07f85be-45da",

"iss": "https://provider.domain.com/",

"sub": "auth/some-hash-here",

"exp": 153452683

}

这部分信息也会被Base64编码,形成JWT的第二部分。需要注意的是,Payload中的信息是可以被任何人解码阅读的,因此不应该存放敏感信息。

Signature(签名)

Signature部分是对前两部分的签名,防止数据篡改。生成签名的方法是将编码后的Header和Payload以及一个密钥使用Header中指定的算法进行签名。例如,如果使用HMAC SHA256算法,签名会是这样的:

HMACSHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

secret)

这个签名确保了JWT在传输过程中未被篡改。

一、JWT 的核心作用

1. 身份认证(Authentication)

2. 信息交换与授权(Authorization)

3. 安全传输数据

我的理解就是  JWT在这里起身份认证的作用,然后整个过程相当于垂直越权

先随便注册一个账号

然后登录,点击个人中心

F12,点击网络,搜索JWT

可以使用jwtcrack工具中的crackjwt.py脚本用字典爆破出密钥

jwtcrack工具免费下载

使用方法:

python   crackjwt.py   JWT   字典

得到密钥为 SYSA

 再把JWT放到在线解析网站(下面3个随便选一个即可)

jwt在线解析 - JSON工具

jwt解密/加密 - bejson在线工具

JSON Web Tokens - jwt.io

把username改为admin,把密钥改为SYSA ,然后进行编码

  

用编码后的JWT替换原来的JWT

得到flag 

flag{ec39c705cfb5295f9dddcedc819a1659}

七.login 

F12可以看到给了学号密码

学号密码提交20200101,显示提交成功,但没啥反应

提交20200102试试,发现显示了f

然后每次加1,把每次显示的 合在一起就是flag

flag{dlcg} 

八. iphone

进来后是这样的

翻译一下

【抱歉,管理菜单必须从 iPhone 或iPad 查看;】这句话是重点

这里又有个知识点了

User-Agent 

User-Agent 是 HTTP 请求头中的一个字段,用于标识客户端的设备、操作系统、浏览器等信息。服务器通过解析 User-Agent,可以判断访问者的来源,从而决定是否允许访问或提供特定的内容。

在网页爬虫中,默认的 User-Agent 通常会暴露爬虫的身份,导致被服务器拒绝访问(如返回 HTTP 403 错误)。通过修改 User-Agent,可以伪装成普通用户的浏览器,从而绕过限制。

如何获取网页的 User-Agent

在浏览器中,可以通过以下步骤获取 User-Agent:

  1. 打开目标网页,按下 F12 或点击浏览器右上角的“更多工具”选择“开发者工具”。

  2. 刷新网页后,选择“Network”选项卡,再点击“Doc”。

  3. 在右侧的“Headers”中,向下滚动找到 User-Agent 字段,复制其内容。

User-Agent 的组成结构

User-Agent 通常由以下部分组成:

  1. Mozilla/5.0:历史遗留部分,几乎所有 User-Agent 都包含此字段。

  2. 操作系统信息:如 Windows NT 10.0 表示 Windows 10 系统,X11; Linux x86_64 表示 Linux 系统。

  3. 引擎版本:如 AppleWebKit/537.36,表示浏览器的渲染引擎。

  4. 浏览器版本:如 Chrome/81.0.4044.113,表示浏览器的具体版本。

通过理解 User-Agent 的结构,可以根据需要自定义字段内容,以适应不同的爬虫场景。

 所有只需要通过修改 User-Agent,可以伪装成iphone用户的浏览器,从而绕过限制。

Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Mobile/15E148 Safari/604.1

轻松拿下

flag{ba4c2f175f0dba2f2974e676c6dfbbab}

 九.浮生日记

随便尝试的输入一些东西,还尝试了一些注入,但是没啥用

F12后有些新发现

其实上面也有 

弹个窗 ,让我想到了xss的一些知识

输入<script>alert(1)</script>试试,发现script没了,应该是被注释掉了

根据源代码先闭合value,然后再独立出一个script执行恶意代码

"><sscriptcript>alert(1)</sscriptcript>

这时候就会弹出来一个弹窗,点确认 

flag{747b11f075d2f6f0d599058206190e27}

十.$$ 

 又是php

解析一下

<?php
/*

PolarD&N CTF

*/

highlight_file(__file__);  // 显示当前PHP源代码,方便审计
error_reporting(0);        // 关闭错误报告,防止信息泄露
include "flag.php";        // 包含存储flag的文件

$a=$_GET['c'];             // 获取URL参数c的值

if(isset($_GET['c'])){     // 检查参数c是否存在
    if(preg_match('/flag|\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $a)){
        // 使用正则表达式过滤危险字符:
        // 包括flag字符串、空白字符、各种符号以及数字和HTML标签
        die("oh on!!!");  // 匹配到过滤字符时终止执行
    }
    else{
        eval("var_dump($$a);");  // 执行动态生成的PHP代码,使用变量变量语法
    }
}

GLOBALS 

GLOBALS 是 PHP 中的一个超全局变量(Superglobal Variable),其作用是提供对所有全局变量的访问。

总结:利用流程

  1. 用户访问 URL:http://example.com/index.php?c=GLOBALS
  2. 代码执行 eval("var_dump($GLOBALS);");
  3. var_dump() 输出所有全局变量,包括 $flag
  4. 用户从输出中提取 flag 值

 输入?c=GLOBALS

flag{9f8a2133f0cad361ff6d22a445c2531a}


网站公告

今日签到

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