s1mh0 发表于 2024-2-25 15:29

吾爱破解 2024 年春节解题红包活动-Web题解

本帖最后由 s1mh0 于 2024-2-25 21:06 编辑

## Web 初级题

### flag1:

在视频第三秒开始的波纹中




flag1{52pj2024}



### flag2:

在flag4中得到的网址抓包,在响应体中得到flag2





### flag3:

视频开头的雪花水印中,反复播放几遍就能看清楚(截图看不出来就不截了)

flag3{GRsgk2}



### flag4:

将视频中的四个二维码图片拼接得到网址


```text
https://2024challenge.52pojie.cn/
```

登录后看到flag4图片藏在了背景图片中



flag4{YvJZNS}



### flagA:

登录时,请求包会在Set-Cookie中设置flagA变量,看视频评论区得知要找接口解



在页面源代码看到

```html
<script>
    fetch('/auth/uid').then(res => res.text()).then(res => {
      if (res) {
            document.querySelector('#uid').textContent = res;
            document.querySelector('#logout-form').style.display = '';
            document.querySelector('#login-form').style.display = 'none';
      }
    });
</script>
```

访问`/auth/uid`接口,发现会将请求体中uid变量值解密成对应数字,抓包修改uid值为flagA变量值,得到flagA





## Web 中级题

### flag5:

主页面抓包的时候看到了源码中flag5跟9的提示



将`<wbr>`全部替换为空,调整一下视角得到flag5



flag5{P3prqF}



### flag6:

跳转flag6页面点击计算即可



flag6{20240217}



### flag7:

在视频出现的github仓库的README文件中



flag7{Djl9NQ}



### flag8:

玩2048小游戏



flag8{OaOjIK}



### flagB:

通过买`v我50`道具得到`“溢出”`的关键词,手工尝试得到了几个临界值,还是没什么头绪,不知道后端溢出逻辑,然后写了个脚本爆破临界值,从左到右通过`钱不够`和`钱变多`状态变化确定每一位上的数字

```python
import requests
session = requests.Session()

headers = {"xxx":"xxx"}
cookies = {"xxx":"xxx"}

count = '91'
new_count = ''
weishu = 10 # 位数

while 1:
    num = count.ljust(weishu, "0")
    print(num)
    paramsPost = {"shop_item_id": "5", "buy_count": "" + num + ""}
    response = session.post("https://2024challenge.52pojie.cn/flagB/buy_item", data=paramsPost, headers=headers,
                            cookies=cookies)
    if "钱不够" not in response.content.decode():
      new_count = str(int(count)-1)
      count=new_count + '0'
      print(new_count)
      if len(new_count)>weishu:
            break
    else:
      count = str(int(count)+1)
```

通过控制weishu变量和count变量,得到最小临界值为10位,并且前几个临界值依次为

```text
9232018856
27696056569
46160094282
64624131995
83088169708
```

得到临界值公式

```
9232018856 + (18464037713的倍数)
```

继续写脚本将倍数从1开始每次加1,提交每个临界值,发现还是不行,尝试将倍数改为每次加0.5,发现凡是乘上x.5倍的都能购买成功

```python
import requests
session = requests.Session()
flag = 1

while 1:
    num = 9232018856 + 18464037713 * flag
    num = round(num+0.1) # 发现xx.5四舍五入的时候变成舍了,得加0.1
    print(num)
   
    headers = {"xxx":"xxx"}
    cookies = {"xxx":"xxx"}
    paramsPost = {"shop_item_id": "5", "buy_count": "" + str(num) + ""}
    response = session.post("https://2024challenge.52pojie.cn/flagB/buy_item", data=paramsPost, headers=headers,
                            cookies=cookies)
    if ("钱不够" or "暂时先拦一下") in response.content.decode():
      flag = flag + 0.5
    else:
      print(response.content.decode())
      break
```



###



## Web 高级题

### flag9:

同flag5一起在源码出现,观察flag5的位置,尝试将flag5的每个字符转成换行符,得到flag9



flag9{KHTALK}



### flag10:

跟flag4藏在一个图片中,Stegsolve查看发现RGB三个通道都有flag10



flag10{6BxMkW}



### flag11:

点击flag11页面,查看源代码提示要将var1和var2两个变量改为合适的值,尝试后发现分别改为71和20时得到完整图片



flag11{HPQfVF}



### flag12:

非预期解,预期解法应该是要根据flag12页面这串逻辑解密(并且是通过点击获取参数,也不能通过bp抓包爆破)

```html
<script>
    WebAssembly.instantiateStreaming(fetch('flag12.wasm'))
      .then(({instance}) => {
            const get_flag12 = (secret) => {
                let num = instance.exports.get_flag12(secret);
                let str = '';
                while (num > 0) {
                  str = String.fromCodePoint(num & 0xff) + str;
                  num >>= 8;
                }
                return `flag12{${str}}`;
            }
            document.querySelector('button').addEventListener('click', (e) => {
                e.preventDefault();
                document.querySelector('#result').textContent = get_flag12(parseInt(document.querySelector('input').value));
            });
      });
</script>
```

直接查看flag12.wasm内容,尝试将1048576、1213159497、1103515245转为bytes类型



```python
from Crypto.Util.number import long_to_bytes
print(long_to_bytes(1103515245))
```

发现`1103515245`可以转成字符串`HOXI`,flag即为flag12{HOXI}



### flagC:

首先根据测试图片,查看需要哪些种类,再用ps将其抠出来,提交测试修改它们的位置即可,感觉不如flagA难


s1mh0 发表于 2024-3-21 18:50

gunxsword 发表于 2024-3-6 10:08
FLAG6,你是直接点的计算???...这计算MD5...你这是跑了多久?

当时点完以为是网卡了就去找其他flag没管,过了一会儿点回来看到直接出了,所以就没去看源码。。。

13565196007 发表于 2024-2-29 18:59

受教了,谢谢

scdxlw 发表于 2024-3-2 16:21

高手,真的很厉害

gunxsword 发表于 2024-3-6 10:08

FLAG6,你是直接点的计算???...这计算MD5...你这是跑了多久?
页: [1]
查看完整版本: 吾爱破解 2024 年春节解题红包活动-Web题解