吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1657|回复: 2
上一主题 下一主题
收起左侧

[CTF] 0xGame 2025 Week3 Reverse WP

[复制链接]
跳转到指定楼层
楼主
BaiGuQing 发表于 2025-12-16 22:21 回帖奖励
本帖最后由 BaiGuQing 于 2025-12-16 22:23 编辑

引言

  • 我希望能够帮助像我一样的新手,如果大佬发现WP有问题可以评论,我会改进!

    ezVBS

  • 我不得不说,要听劝。原题都告诉我了,不让我打开,我还就偏打开了,然后去网上搜VBS逆向,最后在赛博厨子那里逆向出了
    I have already warned you not to run VBS directly, your computer is likely to be attacked because of this, just as your flag has been overwritten
  • 当时没怎么注意文字,就去看官方WP了,结果打开记事本看了看,和WP上的不一样啊,我还以为题出错了,回来又下了一遍,没运行,直接记事本编译,我恍然大悟,给我自己气笑了
  • 把execute换成wscript.echo,在根目录下运行cmd,输入cscript 1.vbs
  • 复制回1.vbs
  • 继续替换,直到出现正常的代码
  • 这里再运行一遍,还需要替换一遍再运行,才能得到
  • 然后交给赛博厨子

    Q(≧▽≦)T

  • 先运行一下exe文件,发现是输入账户密码类型的,我先用exeinfope看了下有没有壳,发现没有,就拖进了dbg,然后搜索了下字符串
  • 中文乱码的话需要安装插件,x64dbg_tol

  • 很明显有两个加密后的字符串以及各种提醒文字
  • 如果运行了或者看到这个提醒就知道,用户名是四位数字的,我们输出1234试一试,在这之前先打个断点
  • 运行后发现这个不是判定用户名是否正确的,而是下面的代码,到达断点后用f7到下面(记得先f9运行一下)
  • 看到这里应该可以猜出是判断是否相等,看了之前的字符串,就知道03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4是我们输入的1234加密后的字符串
  • 我们去赛博厨子跑一下
  • 发现是SHA-256,我们就可以找一个在线平台破解一下之前的SHA-256
  • 就得到了用户名
  • 然后就去找关于密码的字符串继续看相应内容
  • 转到相应的反汇编之后,会发现只有上面的函数和密码加密相关
  • 然后就可以把exe丢到IDA分析一下了
  • 最后就会发现是这个函数在进行加密
  • 联系之前搜索到的字符串,去赛博厨子破解一下
  • 就得到了flag
  • 这道题我不看官方WP根本没头绪啊:(

    Minesweeper

  • 打开ms_obfus.js,然后把expert模式下的mines改为0x1,打开hmtl
  • 剩余地雷为1就成功了,随便点一下
  • 用chatgpt也可以直接出

    easyApp

  • 下个手机模拟器安装一下,就会发现是个输入+校验的程序
  • 可以用jadx进行分析
  • 接下来先看AndroidManifest.xml这个文件,它实际上是⼀个apk的配置文件,里面存储了apk的很多信息,包括程序入口点,我们要分析程序的执行逻辑,就得先找到程序的入口点
  • 这个就是入口了,双击可以跳转
  • onCreat相当于c语言的main函数,就是入口函数
  • 直接把代码丢给chatgpt :)


  • 直接解压apk,会发现目录和这个反编译目录一样
  • 然后把解压出来的bin文件继续拖到jadx
  • 用一下官方WP的脚本
    from z3 import *  
    a,b,c = Ints("a b c")  
    s = Solver()  
    s.add(a*3 + b - 27454419028250566601 == 0)  
    s.add(c*2 - 5*b + 20616666104378640363 == 0)  
    s.add(a + 4*c - 0x1dce62be9f0fa2f6c == 0)  
    if s.check() == sat:  
    result = s.model()  
    for var in (a,c):  
        print(hex(result[var].as_long())[2:],end="")

    World's_end_BlackBox

  • 先用exeinfope看看有没有壳,发现没壳,拖进ida发现也看不懂
  • 直接拖进dbg搜索一下字符串
  • 发现是输入两段字符串
  • 把两段Length Error处上面的代码打上断点
  • 然后双击到第一个length error处
  • 发现他是在对比我们第一个输入的字符串长度,f9运行到这里
  • 按空格将jz改为jmp
  • 这里其实可以看到应该是长度为12才能过(0xC=12)
  • 往下翻一翻会发现下面有个密码错误,在它上方打个断点
  • 那很明显这是在对比密码正确与否,这时候按f9就能看到正确密码了
  • 这里也需要改下汇编和上面一致
  • 这里就显示了正确密码,如果你想要知道这个密码哪里来的
  • 也很简单,看上方的每个函数,应该调用了两个函数,我们会发现第一个函数就是加密函数,采用的是xxtea

  • 接着往下走会发现还有个长度错误
  • 接着断点,改汇编,f9
  • 接着往下看会发现有个all perfect的字样
  • 在它上方打上断点
  • 你会发现这两个断点之前有很多内容,但是真正重要的只有
  • 这个函数,以及它上方的存储的东西
  • 这里f9运行到刚打的断点,在这之前现在cmd框里输入点东西,因为之前那一大段内容现在用不到,这一部分是加密的
  • 接下来就是看这个406D80的函数,看上面的汇编应该可以知道是传入了两个参数,一个是读取你的,一个是它自带的
  • 双击这个40B0A0可以在内存框中看他存储了什么东西
  • 两个值
  • 然后进入406D80后,可以知道那里面就是对比长度和内容的。也可以得知这两个值相当于指针,从开始到结束
  • 第一个是开始,第二个是结束,CTRL+g进行跳转

  • 就找到了这段加密字符
  • ok,返回到之前那两个断点之前一大段的汇编那里
  • 会发现401fcc是加密函数
  • 这里给出官方的WP脚本
    flag = [
    0xFC, 0xEA, 0x15, 0x2C, 0x86, 0x38, 0x3F, 0xF3, 0x92, 0xCE, 0xDA, 0x8E, 0x48, 0xD3, 0x7, 0x9F,
    0xD9, 0x57, 0xB1, 0xEE, 0x41, 0x9A, 0x4D, 0xC5, 0x65, 0x6A, 0xFF, 0xC9, 0x5D, 0x34, 0xAD, 0xEA,
    0xB1, 0x20, 0x4B, 0xDC, 0xBD, 0xD2, 0x35, 0x2, 0x84, 0x35, 0x71, 0xEC, 0xE0, 0x48, 0x8E, 0xEA,
    0x7B, 0xAA, 0xCF
    ]
    key = "XaleidscopiX"
    s = []
    t = []
    # KSA Initialization
    for i in range(256):
    s.append(i)
    t.append(ord(key[i % len(key)]))
    # KSA Scrambling
    j = 0
    for i in range(256):
    j = (j + s[i] + t[i]) % 256
    s[i], s[j] = s[j], s[i]
    k = []
    i = 0
    j = 0
    # PRGA Keystream Generation
    for r in range(len(flag)):
    i = (i + 1) % 256
    j = (j + s[i]) % 256
    s[i], s[j] = s[j], s[i]
    t_val = (s[i] + s[j]) % 256  # 使用 t_val 避免与全局列表 t 混淆
    k.append(s[t_val])
    # Decryption (Final XOR operation)
    for idx in range(len(flag)):
    # Decryption formula: (Ciphertext XOR Keystream XOR 7)
    decrypted_byte = (flag[idx] ^ k[idx] ^ 7)
    print(chr(decrypted_byte), end='')

    Calamity_Fortune

  • 嘿嘿,这道题偷个小懒,看官方的WP吧,那个WP挺详细的了!



官方WP上传到网盘了
链接:https://pan.quark.cn/s/9d43fd9b16e3?pwd=gk2Y
提取码:gk2Y
Week4的WP我应该是不会更新了,对我来说有点困难了,已经复现一个多星期了,还没搞懂
过于依赖AI是不对的,我也只是来辅助我快速学习用而已,不要过度依赖= =

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
allspark + 1 + 1 用心讨论,共获提升!

查看全部评分

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

沙发
Hmily 发表于 2025-12-31 18:18
写的挺好的,很详细,这个系列给一个精华鼓励,期待继续深入下去!
3#
zorua 发表于 2026-1-2 08:56
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-2-8 05:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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