吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 663|回复: 0
收起左侧

[CTF] 【2025春节】解题领红包初级题 WP

[复制链接]
Dahl 发表于 2025-2-13 16:34
太菜了只会初级题  :'(weeqw


Windows初级题

先判断flag长度为27

print(len(bytes.fromhex("6b83537e8a30477b3e59362e4c293535340c5b5a5c797f5073747e")))
#27

搜索Success,在附近下断点,输入全1,直接调试即可得到flag

BN调试

x32dbg调试

fl@g{52pOj1E_2025#Fighting}

Android初级题

拖入JADX

在FoldFragment2类中看到三个Base64编码的字符串:

"2hyWtSLN69+QWLHQ"
"hjyaQ8jNSdp+mZic7Kdtyw=="
"cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA=="

在TO类可以看到db方法,即Base64解码后应用XXTEA解密,密钥为my-xxtea-secret填充至16字节

粘贴到IDE里运行即可

运行后可以知道这三个字符串分别对应为:

flag{
xnkl2025!}
快去寻找flag吧!

所以flag为

flag{xnkl2025!}

EXP:

import java.util.Base64;
import java.nio.charset.StandardCharsets;
public class Main {
    private static final String YYLX = "my-xxtea-secret";
    public static final byte[] de(byte[] data, byte[] key) {
        return toByteArray(de(toIntArray(data, false), toIntArray(fK(key), false)), true);
    }
    private static int[] de(int[] iArr, int[] iArr2) {
        int length = iArr.length;
        int i = length - 1;
        if (i < 1) {
            return iArr;
        }
        int i2 = iArr[0];
        for (int i3 = ((52 / length) + 6) * (-1640531527); i3 != 0; i3 -= -1640531527) {
            int i4 = (i3 >>> 2) & 3;
            for (int i5 = i; i5 > 0; i5--) {
                int i6 = iArr[i5 - 1];
                i2 = iArr[i5] - (((i2 ^ i3) + (i6 ^ iArr2[(i5 & 3) ^ i4])) ^ (((i6 >>> 5) ^ (i2 << 2)) + ((i2 >>> 3) ^ (i6 << 4))));
                iArr[i5] = i2;
            }
            int i7 = iArr[i];
            i2 = iArr[0] - (((i2 ^ i3) + (iArr2[i4] ^ i7)) ^ (((i7 >>> 5) ^ (i2 << 2)) + ((i2 >>> 3) ^ (i7 << 4))));
            iArr[0] = i2;
        }
        return iArr;
    }
    private static int[] toIntArray(byte[] bArr, boolean z) {
        int length = (bArr.length + 3) / 4;
        int[] iArr = new int[length + (z ? 1 : 0)];
        int length2 = bArr.length;
        for (int i = 0; i < length2; i++) {
            int i2 = i / 4;
            iArr[i2] = iArr[i2] | ((bArr[i] & 0xFF) << ((i % 4) * 8));
        }
        if (z) {
            iArr[length] = bArr.length;
        }
        return iArr;
    }
    private static byte[] toByteArray(int[] iArr, boolean z) {
        int length = iArr.length * 4;
        if (z) {
            length = iArr[iArr.length - 1];
        }
        byte[] bArr = new byte[length];
        for (int i = 0; i < length; i++) {
            bArr[i] = (byte) ((iArr[i / 4] >> ((i % 4) * 8)) & 255);
        }
        return bArr;
    }
    private static byte[] fK(byte[] bArr) {
        byte[] bArr2 = new byte[16];
        System.arraycopy(bArr, 0, bArr2, 0, Math.min(bArr.length, 16));
        return bArr2;
    }
    public static void main(String[] args) {
        String v1 = "2hyWtSLN69+QWLHQ";
        String v2 = "hjyaQ8jNSdp+mZic7Kdtyw==";
        byte[] decode1 = Base64.getDecoder().decode(v1);
        byte[] decode2 = Base64.getDecoder().decode(v2);
        byte[] bytes = YYLX.getBytes(StandardCharsets.UTF_8);
        byte[] flag1 = de(decode1,bytes);
        byte[] flag2 = de(decode2,bytes);
        String flag1_ = new String(flag1, StandardCharsets.UTF_8);
        String flag2_ = new String(flag2, StandardCharsets.UTF_8);
        System.out.println(flag1_ + flag2_);//flag{xnkl2025!}
    }
}

免费评分

参与人数 4威望 +1 吾爱币 +22 热心值 +3 收起 理由
a375780900 + 1 用心讨论,共获提升!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
灵魂深处 + 1 用心讨论,共获提升!
koishi4231 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-1 09:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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