跳过正文
  1. Writeups/

LitCTF2024 Reverse

·163 字·1 分钟·
CTF Reverse
目录

题目难度很友好,也借此拿下第一次ak,值得纪念

REak

编码喵
#

魔改的Base64,反编译看main函数比较乱,但是发现了一个重要的函数_text_72(),跟踪发现了一串特征鲜明的Base64编码表。

base64喵

之后在主函数也能找到编码后的密文,用cyberchef解密即可。

ezrc4
#

签到题,原汁原味的RC4,程序中能找到加密后的密文和key。

唯一需要注意的是key是被xor加密过的,具体算法在函数X_X()中,把key解密后再对RC4解密。

key0="fenkey?"
key1=[0x0A, 0x0C, 0x1A, 0x08, 0x11, 0x1F, 0x1E]
flag=[]
enc=[0xd5,0xb2,0x7c,0xdc,0x90,0xa2,0x6e,0x60,0x6,0x13,0xe4,0x71,0x59,0xb0,0x90,0x31,0xb2,0xc7,0x1d,0xd7,0x7f]
key = [chr(ord(key0[i])^key1[i]) for i in range(len(key0))]

s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
i = j = 0
for s in enc:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    flag.append(s^k)
print(bytes(flag))

ezpython!!!!!
#

python的exe文件。用pyinstxtractor先分离出pyc文件。之后进行反编译。由于python版本问题,本地的uncompyle6引擎失效,所以找了在线的pycdc引擎进行反编译。

查看py源码,导入了Litctfbase64库,然后对程序中的密文字符串进行解码并且作为flag输出。为了分析魔改Base64的具体算法,需要继续查看这个库的源码,位置在pyinstxtractor文件夹下的 .\ezpy.exe_extracted\PYZ-00.pyz_extracted\Litctfbase64.pyc

反编译就能看到编码表,在Cyberchef解码拿flag。

hello_upx
#

题目已经提示了是upx壳,用upx -d命令脱壳出现问题。后来在DIE中发现壳是魔改过的,而且程序是64位。

upxdie

利用x64dbgScylla进行手动脱壳。由于第一次手脱,部分思路参考:借助 x64dbg 的 UPX 手工脱壳

首先动调找到OEP。查看断点窗口中的入口断点,多次运行直到RIP指向入口处,该程序是在0x44FF70。根据esp定律,经过pushadpopad后,OEP处的栈顶和现在入口处的栈顶地址是相同的。所以需要在esp指向的内存地址处下一个硬件断点。(寄存器窗口空白处右键)

upx-x64dbg1

upx-x64dbg2

继续运行至该断点,可以看到刚好是在一系列poppopad)后面,单步跳过至一个大的跳转指令处,跳转后的地址即为OEP

接下来要用Scylla进行dump脱壳,直接使用 IAT Autosearch 功能,期间可能会提示使用 IAT Search Advanced ,选 “是” 继续。然后 Get Imports ,最后直接 Dump 。保存成新的exe文件。

算法部分比较简单,直接写脚本即可。

#include<stdio.h>
int main()
{
    unsigned long long v4[3];
    v4[0] = 0x707541504072684C;
    v4[1] = 0x655158612559632B;
    v4[2] = 0x4F5E4E601E5A4E20;
    unsigned char *data = (unsigned char *)v4;
    char flag[40]={0};
    for (int i=0;i<=24;++i)
    {
        flag[i] = (char)(data[i]+i);
    }
    printf("%s",flag);
    return 0;
}

相关文章

HGAME2024 Revserse
·1327 字·7 分钟
CTF Reverse
reverse writeup of Hgame2024
0xGame2023 Reverse
·591 字·3 分钟
CTF Reverse
reverse writeup of 0xgame2023
0xGame2023 Crypto
·1338 字·7 分钟
CTF Crypto
crypto writeup of 0xgame2023