lcbreak 发表于 2023-2-5 15:46

【2023】解题领红包Web(静态差三个未找全)

本帖最后由 lcbreak 于 2023-2-5 22:56 编辑

# 2023春节领红包Web解题(未找全静态flag)

```js
/*
业余有一点web相关的经验,分享个人解题思路。
静态flag找到了1~7、9、11,动态A、B、C,静态8、10、12未找到。
ps:
静态flag,8、10、12没找到能是没想到或者超出我知识范围了,二进制中可能还藏有一个flag;
个人猜测视频背景图也可能藏有flag。
动态flag,C很容易就找到;
A不难但是相对难找一点,注意力全放在视频上去了以为线索是分开的藏在视频的其他地方,
后面回到页面在响应头就找到;
B根据页面注释提示查询域名解析找到线索。
*/
```

## flag1

1. 视频中直接获取。
`flag1{52pojiehappynewyear}`

## flag2

1. 扫描视频二维码在url中获取。
`flag2{878a48f2}`

## flag3

1. 视频25秒左右,右下角up主昵称会变成一个加密字符`iodj3{06i95dig}`。
!(https://s1.ax1x.com/2023/02/05/pS63sFP.png)

2. 通过字符判断为凯撒密码;
凯撒密码简单来说通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。
例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
3. 简单计算获取flag3。
`flag3{06f95afd}`

## flag4

1. 视频制作 GanlvTech UP主简介发现字符串`ZmxhZzR7OWNiOTExMTd9`。
!(https://s1.ax1x.com/2023/02/05/pS63yJf.png)
2. 通过特征判断为base64编码,解码后可以获取flag4。
在浏览器环境中可借助 `btoa/atob` 编码解码,在 Node 环境中借助于 Buffer API 编码解码
`flag4{9cb91117}`

## flag5

1. 视频30左右开始有电报音,判断为摩斯密码。

    ```js
    //ps:摩斯密码我只是听说过,听了n遍脑子中一直是滴滴滴滴(耳朵不好听不过来);想来想去,终于找到了办法。
    ```

2. 将视频下载下来,提取音频,放入`Adobe Audition`中查看音频波形(后面flag6、9也会用到);
通过波形图查看声音持续时间(下图所示),记录密码`..-./.-../.-/--./....././.-/../-`。
!(https://s1.ax1x.com/2023/02/05/pS63Dot.png)
3. 通过记录下的密码,去查密码表或者找一个在线转换工具即可解码获得flag5。
`flag5{eait}`

## flag6

1. flag6在视频开始有提示,拨号音,听力好的或许可以直接听出来。

    ```js
    //ps:我听了一会发现听不出来感觉都差不多,拿手机拨号按声音对也感觉都是一个音)
    ```

2. 于是我又查看拨号音的音频,通过搜索发现每个键的声音频率不一样,如下表;
根据声音不同高低频找到对应数字,获得flag6。
`flag6{590124}`
!(https://s1.ax1x.com/2023/02/05/pS63gSS.png)
拨号音频率对照表:

| 低\高/Hz | 1209 | 1336 | 1447 | 1633 |
| :-----: | :-----: | :-----: | :-----: | :-----: |
| 697 | 1 | 2 | 3 | A |
| 770 | 4 | 5 | 6 | B |
| 852 | 7 | 8 | 9 | C |
| 941 | * | 0 | # | D |

## flag7

1. 根据视频顶部二进制数字转换为字符串即可获得。
`flag7{5d06be63}`

## flag8

```js
//没有找到
```

## flag9

1. 注意视频尾部的有异常声音,用Audition将该段声音反向播放即可获得的flag9。

    ```js
    //ps:听了好多遍, 1、f容易听错成e、m,c听得不太清,可能是下载视频的音质问题吧。
    ```

    `flag9{21c5f8}`

## flag10

```javascript
//没有找到
```

## flag11

1. 视频底部的字符串,看一下它的特征,由重复的符号构成,Brainfuck编码,通过解码获取flag11。
`flag11{63418de7}`

## flag12

```javascript
//没有找到
```

## 动态flag

1. 先访问视频中提示网址`https://2023challenge.52pojie.cn/` 发现不能访问。
2. 根据提示得知该网站服务器和吾爱主站是同一台、域名解析有问题,通过修改`本地hosts文件`将域名指向主站ip即可正常访问。

## flagA

1.访问`https://2023challenge.52pojie.cn/`。
2.进入开发者模式,查看页面请求信息发现响应标头有`X-Dynamic-Flag: flagA{Header X-52PoJie-Uid Not Found}`。
!(https://s1.ax1x.com/2023/02/05/pS63BdI.png)
2. 根据响应标头信息,用工具在请求标头添加`X-52PoJie-Uid`值填自己论坛的uid既可获取flag。
!(https://s1.ax1x.com/2023/02/05/pS636W8.png)
!(https://s1.ax1x.com/2023/02/05/pS63RyQ.png)

## flagB

1. 根据页面注释提示,查询域名解析,获取flagB相关信息。
`"_52pojie_2023_happy_new_year=flagB{substr(md5(uid+\"_happy_new_year_\"+floor(timestamp/600)),0,8)}"`
!(https://s1.ax1x.com/2023/02/05/pS632Qg.png)
2. 根据获取相关的信息计算flagB。

    ```js
    /*
    uid+"_happy_new_year_"+时间戳/600,然后计算md5值,最后截取md5值的前8位。
    ps:时间戳的值有点坑尝试过当前时间、春节任务开始\结束时间、web任务开始时间、dns查询能找到的与时间相关的、cookie中与时间相关的,
      发现算出来的都不对,后面发现还是当前时间的时间戳我用Date.now()生成的,忘了生成的精确到毫秒所以一直错误。
    */
    const flagB=md5(uid+"_happy_new_year_"+Math.floor(timestamp/600)).toString().substr(0,8)

    ```

## flagC

1. 访问`https://2023challenge.52pojie.cn/login`页面。
2. 去除输入框`disabled`属性,输入uid登录,会提示不是管理员。
!(https://s1.ax1x.com/2023/02/05/pS63WLj.png)
3. 检查cookie,发现`2023_challenge_jwt_token`键,发现是jwt令牌,通过(https://jwt.io/)页面解码令牌信息,发现`role`属性。
!(https://s1.ax1x.com/2023/02/05/pS63hes.png)
!(https://s1.ax1x.com/2023/02/05/pS634wn.png)
4. 修改role属性为admin,然后修改cookie值刷新页面即可获取动态flagC。

Hmily 发表于 2023-2-6 02:05

你这还没结束咋就发了,这结束给你审核通过了。

lcbreak 发表于 2023-2-6 02:48

Hmily 发表于 2023-2-6 02:05
你这还没结束咋就发了,这结束给你审核通过了。

我试一下md文档有没有错,点了一下保存草稿,就发布了{:1_924:}

Hmily 发表于 2023-2-6 09:06

lcbreak 发表于 2023-2-6 02:48
我试一下md文档有没有错,点了一下保存草稿,就发布了

这应该是一个bug{:1_906:}

豫与遇 发表于 2023-2-7 17:16

mark,膜拜大神

wu666888 发表于 2023-2-14 09:59

大佬学到了,一个都没找到:'(weeqw

smallhaozi 发表于 2023-2-24 15:29

学习一下。

fuum2pimbeb 发表于 2023-8-6 20:25


学习一下。
页: [1]
查看完整版本: 【2023】解题领红包Web(静态差三个未找全)