吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 263|回复: 1
收起左侧

[CTF] 【2026春节】解题领红包之二--大模型解题-trac+mcp

[复制链接]
lxiaobei 发表于 2026-3-4 18:21
本帖最后由 lxiaobei 于 2026-3-4 21:42 编辑

参考了这个师傅的文章https://www.52pojie.cn/thread-2094341-1-1.html
我使用trac+mcp直接无脑让ai调用工具进行分析,确实很简单,并且结果也很准确,生成的报告如下:
CrackMe Challenge v2.5 - Flag分析报告程序信息
  • 程序名称: CrackMe Challenge v2.5 - 2026
  • 分析日期: 2026-03-04
  • 分析工具: IDA Pro + MCP

     找到的Flag
    ✅ 正确的Flag52pojie!!!_2026_Happy_new_year!
     分析过程
    1. 字符串发现
      通过IDA Pro的字符串搜索,发现了以下关键字符串:
  • "Keywords: 52pojie, 2026, Happy new year" - 提示信息
  • "Hint: Fake flag; length is key" - 提示假flag和长度是关键
  • "[?] Enter the password: " - 密码输入提示
  • "[+] Correct flag: " - 正确flag提示
  • "[X] Wrong password. Keep trying!" - 错误提示


2. 验证函数分析 (sub_4CD130)
假Flag陷阱
程序首先检查输入是否为 "52pojie2026Happy" (16个字符):
n53 = 53; // '5' 的ASCII码v5 = v3;  // 输入长度
v6 = 0;
if ( !v5 )  // 如果长度不为0
{
    while ( Str[v6] == n53 )  // 逐个字符比较
    {
        if ( ++v6 == 16 )  // 如果匹配了16个字符
        {
            // 显示假flag提示
            sub_4C7E50("\n[!] You're getting closer...");
        }
        n53 = byte_4D3032[v6];  // 下一个期望字符
    }
}
byte_4D3032的值: "52pojie2026Happy"这是一个假flag,用来迷惑破解者!
真正的验证逻辑
第一步:长度检查
if ( strlen(Str) != 31 ){
    sub_4C7E50("\n[!] Hint: The length is your first real challenge.");
}
  • 密码长度必须是 31个字符

第二步:sub_4016D0验证
if ( (unsigned __int8)sub_4016D0(Str, 31) ){
    // 验证通过
}
第三步:加权和验证
Str = 0;v8 = *Str_1;
if ( !*Str_1 )
    goto LABEL_16;
v9 = 0;
do
{
    Str += ++v9 * v8;  // 加权和计算
    v8 = Str_1[v9];
}
while ( v8 );
if ( Str != (char *)44709 )  // 期望的加权和
{
    // 校验失败
}
3. 关键验证数据生成 (sub_401620)
这个函数生成31字节的验证数据:
*(_DWORD *)a1 = 758280311;      // 0x2D3A1C77*(_DWORD *)(a1 + 4) = 1663511336;  // 0x631A7D68
*(_DWORD *)(a1 + 8) = 1880974179;  // 0x701B7B63
*(_DWORD *)(a1 + 12) = 494170226;  // 0x1D6D1D72
*(_DWORD *)(a1 + 16) = 842146570;  // 0x3234564A
*(_DWORD *)(a1 + 20) = 657202491;  // 0x272B1A7B
*(_DWORD *)(a1 + 24) = 658185525;  // 0x273A1A75
*(_WORD *)(a1 + 28) = 12323;       // 0x3023
*(_BYTE *)(a1 + 30) = 99;          // 0x63
​
// 每个字节与0x42异或解码
result = (_BYTE *)a1;
do
    *result++ ^= 0x42u;
while ( result != (_BYTE *)(a1 + 31) );

4. Flag解码
原始数据(小端序):
77 70 32 2D 28 2B 27 63 63 63 1D 70 72 70 74 1D
0A 23 32 32 3B 1D 2C 27 35 1D 3B 27 23 30 63

与0x42异或后:
35 32 70 6F 6A 69 65 21 21 21 5F 32 30 32 36 5F
48 61 70 70 79 5F 6E 65 77 5F 79 65 61 72 21

转换为ASCII:52pojie!!!_2026_Happy_new_year!

5. 验证

长度验证: 31个字符 ✓
加权和验证:
s = "52pojie!!!_2026_Happy_new_year!"weighted_sum = sum((i + 1) * ord(c) for i, c in enumerate(s))
# weighted_sum = 44709 ✓

字符匹配验证:
# 与Block数据逐个字符比较
# 全部31个字符都匹配 ✓

总结破解关键点
  • 识别假flag: "52pojie2026Happy" 是陷阱
  • 长度分析: 真正的flag长度是31个字符
  • 数据解码: 通过异或0x42解码验证数据
  • 多重验证: 长度 + 字符匹配 + 加权和
正确的Flag52pojie!!!_2026_Happy_new_year!程序安全性评估
  • 难度: 中等
  • 技术点: 字符串混淆、假flag陷阱、多重验证
  • 破解方法: 静态分析 + 数据解码


报告生成时间: 2026-03-04分析工具: IDA Pro MCP

免费评分

参与人数 1威望 +1 吾爱币 +20 热心值 +1 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

小白在这 发表于 2026-3-6 13:25
请问ai用的是哪一个?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-3-17 14:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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