吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 729|回复: 3
收起左侧

[CTF] [CTF] 2025解题领红包 Windows和Android初级新人解法

[复制链接]
lsb2pojie 发表于 2025-2-13 10:43
一开始红包题发出来只做了第一题白给题,不敢碰后面的题目
初十开始上班觉得工作太无聊了,打算入门下:
Windows初级题参考了往年的解题思路搞定
安卓初级由于没时间看正己大佬的视频折腾了2天:后面一定认真白嫖视频


#Windows初级题
没有壳,将exe直接拖进吾爱破解专用版OllyDbg进行debug,找到Success的关键词,在前后call的地方上断点
要点是要输对密钥的长度才能走到:Wrong password,please try again
在往上一点可以看到:6b 83 53 7e 8a 30 47 7b 3e 59 36 2e 4c 29 35 35 34 0c 5b 5a 5c 79 7f 50 73 74 7e,长度是27
随便输入27位长度的密码,在Wrong前设置断点,运行到断点位置,在寄存器(FPU)中可看到口令

debug Windows初级题

debug Windows初级题




#安卓初级题
没认真学习的折腾。。。
apk拖到jadx反编译获得源码,从MainActivity向下找,main部分没啥有用的信息
FoldFragment1播放mp3,szd.mp3看下十六进制文件内容没啥有用信息FoldFragment2有onScroll和longPressTimer,尝试题目提示的左滑没啥反应,长按也没反应。。。深入看了下代码发现三个字符串:"2hyWtSLN69+QWLHQ","hjyaQ8jNSdp+mZic7Kdtyw=="和"cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA=="还没学FrIDA,刚刚看其他同学用着真方便,只能参考SPU,TO和T的实现用python实现了db:
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import base64
# 密钥
key = b"my-xxtea-secret"
def fK(key):
    bArr = bytearray(16)
    for i in range(min(len(key), 16)):
        bArr[i] = key[i]
    return bArr
 
def toIntArray(data, include_length):
    length = (len(data) + 3) // 4
    iArr = [0] * (length + (1 if include_length else 0))
     
    for i in range(len(data)):
        iArr[i // 4] |= (data[i] & 0xFF) << ((i % 4) * 8)
     
    if include_length:
        iArr[length] = len(data)
    return iArr
 
def toByteArray(data, include_length):
    if include_length and len(data) > 0:
        length = data[-1]
    else:
        length = len(data) * 4
    bArr = bytearray(length)
     
    for i in range(length):
        bArr[i] = (data[i // 4] >> ((i % 4) * 8)) & 0xFF
    return bArr
 
def delta():
    return 0x9E3779B9
 
def mx(sum, y, z, p, e, k):
    return (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p & 3) ^ (e & 3)] ^ z))
 
def de(v, k):
    """XXTEA 解密算法"""
    n = len(v)
    if n < 2:
        return v
     
    rounds = 6 + 52 // n
    sum = rounds * delta()
    y = v[0]
     
    while sum != 0:
        e = (sum >> 2) & 3
        for p in range(n - 1, 0, -1):
            z = v[p - 1]
            y = (v[p] - mx(sum, y, z, p, e, k)) & 0xFFFFFFFF
            v[p] = y
         
        z = v[n - 1]
        y = (v[0] - mx(sum, y, z, 0, e, k)) & 0xFFFFFFFF
        v[0] = y
        sum -= delta()
     
    return v
 
def db(encoded_string):
    # Base64 解码
    decoded_bytes = base64.b64decode(encoded_string)
 
    # 将字节数组转换为整数数组
    int_array = toIntArray(decoded_bytes, False)
 
    # 将密钥字节数组转换为整数数组
    key_array = toIntArray(fK(key), False)
 
    # 使用 XXTEA 解密
    decrypted_int_array = de(int_array, key_array)
 
    # 将解密后的整数数组转换回字节数组
    decrypted_bytes = toByteArray(decrypted_int_array, True)
 
    # 转换为 UTF-8 字符串并去除可能的填充字符
    result = decrypted_bytes.decode('utf-8').rstrip('\x00')
    return result
 
result1 = db("2hyWtSLN69+QWLHQ")
result2 = db("hjyaQ8jNSdp+mZic7Kdtyw==")
result3 = db("cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA==")
 
print(f"Result 1: {result1}")
print(f"Result 2: {result2}")
print(f"Result 3: {result3}")

结果

结果




大佬们是真厉害,他们解得真快,还有些大佬初级都不做的
虽然是初级题,解出来还是挺开心的
得开始从基础学起来了,不断提升下自己,争取明年搞高级题

免费评分

参与人数 4威望 +1 吾爱币 +22 热心值 +4 收起 理由
irvingcurry + 1 + 1 我很赞同!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lj0822 + 1 + 1 我很赞同!
LONG65041 + 1 看不懂,因为我还没学。哈哈哈!!!

查看全部评分

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

jingtai123 发表于 2025-2-13 11:14
初级不做好像做不了后面的中级高级
Hfqy7000 发表于 2025-2-13 11:15
流水 发表于 2025-2-13 13:37
安卓初级题可以采用hook的方式,直接解密字符串
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-3-20 01:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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