[网鼎杯 2020 青龙组]jocker 题解

简介: [网鼎杯 2020 青龙组]jocker 题解

32位无壳

堆栈有问题

先修堆栈在反编译

查看关键函数

对输入的字符串进行了加密

加密之后omg函数中与存储的字符串进行比较

我们先解密这个

提取数据

 

解密脚本

data=[0x66,0x6b,0x63,0x64,0x7f,0x61,0x67,0x64,0x3b,0x56,0x6b,0x61,0x7b,0x26,0x3b,0x50,0x63,0x5f,0x4d,0x5a,0x71,0x0c,0x37,0x66]
flag=""
for i in range(len(data)):
    if(i&1):
        flag+=chr(data[i]+i)
    else:
        flag+=chr(data[i]^i)
print(flag)

flag{fak3_alw35_sp_me!!}

是假flag

这个循环是一个代码自修改(SMC)

就是执行了这一段循环,才能还原出encrypt代码数据

首先encrypt存在堆栈问题

实用OD,断点打在这里

输入刚才的假flag就能成功运行到这里

函数已经解密完成

然后dump文件

重新用IDA打开dump后的文件

重新用IDA加载dump后的文件,进入到了encrypt函数

解密,这个函数只与flag的前19位进行了加密,解密得到flag的前半段

data=[0x0e,0x0d,0x09,0x06,0x13,0x05,0x58,0x56,0x3e,0x06,0x0c,0x3c,0x1f,0x57,0x14,0x6b,0x57,0x59,0x0d]
str="hahahaha_do_you_find_me?"
flag=""
for i in range(len(data)):
    flag+=chr(data[i]^ord(str[i]))
print(flag)

flag{d07abccf8a410c

观察最后的finally函数查看最后的部分

我们猜测最后的密文':',是'}'与某个值异或的结果

其他四位也是与这个数异或的得到的

a=ord(':')^ord('}')
str="%tp&:"
flag2=""
flag1="flag{d07abccf8a410c"
for i in range(len(str)):
    flag2+=chr(ord(str[i])^a)
print(flag1+flag2)

flag{d07abccf8a410cb37a}

相关文章
|
算法 安全 Java
z3-solver求解器
一个非常高级的工具,SMT求解器。应用领域非常广,解各类方程,解各类编程问题(例如解数独),解逻辑题等都不在话下。
|
Windows
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
11291 0
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
|
存储
[ACTF新生赛2020]SoulLike 题解
[ACTF新生赛2020]SoulLike 题解
283 0
[WMCTF2020]easy_re 题解
[WMCTF2020]easy_re 题解
246 0
[LitCTF 2023]debase64-入土为安的第十八天
[LitCTF 2023]debase64-入土为安的第十八天
132 0
|
数据安全/隐私保护
[LitCTF 2024]ezrc4——入土为安的第一天
[LitCTF 2024]ezrc4——入土为安的第一天
116 0
[LitCTF 2023]程序和人有一个能跑就行了 入土为安的第五天
[LitCTF 2023]程序和人有一个能跑就行了 入土为安的第五天
126 0
|
10月前
|
算法 安全 数据安全/隐私保护
BUUCTF-[2019红帽杯]easyRE(Reverse逆向)
本文详细介绍了对一个无壳的64位ELF文件进行逆向分析的过程。首先通过IDA查找关键字符串定位主函数,然后逐步分析函数逻辑,包括读取输入、异或操作等。接着通过多次Base64解码和异或操作,最终得到了关键的flag。整个过程涉及数组寻址、条件判断和函数调用等技术细节,展示了CTF竞赛中常见的逆向工程技巧。最后附上了完整的Python代码实现,帮助读者理解和复现。
561 1
BUUCTF-[2019红帽杯]easyRE(Reverse逆向)
|
10月前
|
安全 数据安全/隐私保护 Python
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
本文介绍了如何对一个带有UPX壳的ELF文件进行逆向分析。首先通过010Editor确认文件类型和壳的存在,接着使用Free UPX工具进行脱壳。脱壳后在IDA中加载文件,通过字符串查找和交叉引用跟踪定位关键函数。最终利用Python的z3库解决约束问题,得到flag。过程中还遇到了Python版本兼容性问题,并通过重新安装z3-solver解决。最终flag为`flag{e165421110ba03099a1c039337}`,经MD5解密验证为`233`。
327 0
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
[HDCTF2019]Maze(初识逆向)
[HDCTF2019]Maze(初识逆向)
417 1