
HASHCTF2024-Reverse题解
校赛也是ak re了,总排名第二,一等奖+Reverse单项最佳。

一人干活,七人围观!
主要逻辑在这里:


是个多线程代码,线程影响v3的取值和异或的对象,直接上代码:
1 |
|

HASHCTF{N1w_U_h4v3_3xpl0r3d_7h3_c0ncUr*2ency_0f_7h3_c_l4ngu4g3!}
解完之后想起来,既然加密是异或,大概率调试的时候把密文输入,那么最后判断时的结果就是flag,出题人的回答印证了我的猜想,不过是一血,没什么影响。

Teaflower
十分钟秒杀题。
有壳去壳,有花去花,
壳是简单的upx一键去,花是简单的跳转全nop,
TEA的delta魔改了一下,直接写解密代码:
1 |
|

HASHCTF{W0o0w_U_cAn_r3@11y_r3v3r53_14!!}
babycode
我忘了是怎么知道的以太坊虚拟机(大概是拷打GPT的时候它招的供词),找一个能把字节码还原成汇编的网站https://ethervm.io/decompile:

发现有两处位置一直在push数据,将两块数据扒下来,后面还有XOR指令加上出题人提示,将两块数据异或,得到flag:
1 |
|

HASHCTF{S0o0_e2_evm_bytec0d3_revers3!!}
高速龙车驾驶员
直接运行报错需要支持库,走出题人不建议的路线loongarch交叉编译工具链(因为建议的路我不会走),
安装后里面有loongarch64-objdump,用他dump出文件的汇编代码和数据段:



对照出题人给的文档,分析汇编:
1 |
|
关键部分如上:异或加密。
从扒出的数据段中做尝试,最终试出将data段与rodata段异或得到flag。
1 |
|

HASHCTF{You__ know__ _ Lo0oo0oo0ngArch___ LASX_ _So0oo0oo0___Well!!}
xorust
简单恢复一下符号表:

在func函数中找到关键部分:

扒取数据:

发现这些数据比input少一位,试着在最前面加 H
或者在最后面加 }
,
写出解密代码:
1 |
|

HASHCTF{We1c0me_Our_RusT_M@st3r_4o_J0in_tHeCoMp}