吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 985|回复: 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] 纯文本查看 复制代码
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-6-19 09:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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