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

六.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}
相关推荐
递归不收敛1 天前
Conda 常用命令汇总(新手入门笔记)
笔记·conda
前端橙一陈1 天前
Salesforce Developer Edition(开发者版) 搭建测试环境
经验分享·笔记·其他
电子小子洋酱1 天前
BearPi小熊派 鸿蒙入门开发笔记(4)
笔记·华为·harmonyos
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 通过配置类代码方式修改静态资源配置 笔记32
java·spring boot·笔记
聪明的笨猪猪1 天前
Java JVM “内存(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
_dindong1 天前
Linux网络编程:Socket编程TCP
linux·服务器·网络·笔记·学习·tcp/ip
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 属性优先级 行内写法 变量选择 笔记42
java·spring boot·笔记
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 总结 热部署 常用配置 笔记44
java·spring boot·笔记
rechol1 天前
汇编与底层编程笔记
汇编·arm开发·笔记
lzj_pxxw1 天前
嵌入式开发技巧:舍弃标志位,用宏定义函数实现程序单次运行
笔记·stm32·单片机·嵌入式硬件·学习