吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3282|回复: 5
收起左侧

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

[复制链接]
s1mh0 发表于 2024-2-25 15:29
本帖最后由 s1mh0 于 2024-2-25 21:06 编辑

Web 初级题

flag1:

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

pj1.jpg
pj2.jpg

flag1{52pj2024}

flag2:

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


pj3.jpg

flag3:

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

flag3{GRsgk2}

flag4:

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

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

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

pj5.jpg

flag4{YvJZNS}

flagA:

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

在页面源代码看到

<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
pj7.jpg

Web 中级题

flag5:

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

pj8.jpg

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

pj9.jpg

flag5{P3prqF}

flag6:

跳转flag6页面点击计算即可

pj10.jpg

flag6{20240217}

flag7:

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

pj11.jpg

flag7{Djl9NQ}

flag8:

玩2048小游戏

pj12.jpg

flag8{OaOjIK}

flagB:

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

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位,并且前几个临界值依次为

9232018856
27696056569
46160094282
64624131995
83088169708

得到临界值公式

9232018856 + (18464037713的倍数)

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

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

pj14.jpg

Web 高级题

flag9:

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

pj13.jpg

flag9{KHTALK}

flag10:

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

pj15.jpg

flag10{6BxMkW}

flag11:

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

pj16.jpg

flag11{HPQfVF}

flag12:

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

<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类型

pj17.jpg

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

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

flagC:

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

pj18.jpg
pj19.jpg

免费评分

参与人数 4吾爱币 +5 热心值 +3 收起 理由
haxcode + 1 + 1 用心讨论,共获提升!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Neppah + 1 我很赞同!
tomhex + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 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...你这是跑了多久?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 01:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表