type
status
date
slug
summary
tags
category
icon
password
week1
ezIDA
IDA打开得到flag
ezASM
题目是一段汇编代码
输入的flag每个字节异或‘0x22’后与c数组比较
得到脚本:
ezUPX
64位PE文件,有壳
脱壳后得到
把数据提取出来,每个异或‘0x32’即可
得到脚本
ezPYC
PYC解包得到
密钥为1,2,3,4的异或
得到脚本
week2
babyre
IDA打开,通过判断可以得到以上
找到key,结合设置那里,每位异或17
这里eax寄存器减了3,key其实只有前三位异或17
在最后判断flag的函数里可以提取到密文
结合四个加密函数,大概就是创建四个线程,每个线程里存有各自的函数的地址,然后按顺序依次调用,调用了一个线程后该线程对应的信号量减一,下一个线程的信号量加一,这时就调用下一个线程的函数,依次循环,直到全局变量 i 为 31 停止,最后退出线程,四个线程总共循环 8 次
ezcpp
丢进IDA打开
关键在于
sub_140001070
函数上,打开能发现是个tea加密函数
找到
提取cipher时发现
其实flag后半段是完整的,那猜测tea加密只加密了前11位
根据加密函数可得(脚本来自hgame_wp | 北海の小站 (beihaihaihai.top))
babyAndroid
丢进JADX
check1在java层,如下:
看着应该是rc4加密,找到密钥
网上找RC4在线解密
再来是check2
在native层,借助IDA
找到关键函数sub_B18,应该是AES加密,找到密文
网上找AES在线解码
Arithmetic
PE64位有壳程序,用UPX -d脱壳失败,应该是非标准型
010editor打开发现特征码被改过,改回55 50 58(UPX)
脱壳后丢进IDA,程序从out中读取了数据
分析一下逻辑:
010editor打开out文件
之后便是求解数塔问题了,根据提示是求最大路径和,左 1 右 2,找到最大值
week3
mystery
打开能发现
sub_13E0
和sub_1500
是RC4加密(后者魔改)
key找到能发现是改过的,交叉应用可以找到(后面没用上)
s2提取密文
在
sub_1500
函数里下断点,动调找到result(解密的key)准备就绪,脚本:
encrypt
IDA打开找到
main
函数,发现全是回调函数毫无头绪,有许多函数,挨个搜一下
- 根据这几个函数找到加密,
win下的CNG加密
使用 CNG 加密数据 - Win32 apps | Microsoft Learn
提取pbSecret(key):
提取unk_140005050(cipher):
根据以上,可知iv(v6)的值在unk_1400034A0中,提取:
然后厨子梭了
findme
main函数给了两个假flag,点进buffer
MZ90,exe文件头,但是中间有大量0混淆数据
脚本去掉后,得到real.exe,丢进IDA
找到内容,但是反编译不了,有很多jz花指令,打idapython去花
去花指令后,分析后可以知道是魔改的RC4
动调找到key和cipher
因为python搓脚本的时候,因为对cipher的减法操作导致了结果超出了 Unicode 范围,所以将超出范围的hex(key[i])数据改为对应补码,脚本:
crackme
main
·函数到这里就戛然而止了,但是有一个 CxxThrowException(&pExceptionObject, (ThrowInfo *)&TI2PEAD);的异常抛出函数try后面跟着三个catch,地址连续,但是IDA并没有识别
把他们dump下来,再用IDA打开
是魔改的XTEA加密,不是sum + delta而是sum ^ delta
然后再从main函数里提取
得到脚本:
week4
change
经过静态分析和动调,可以知道输入经历
encode
函数之后,与cipher比较,点进encode关键在于两个
beep
函数,动调可以发现前一个beep会调用第二个beep会调用
分析可以知道,偶数位调用sub_7FF7401D3650函数,奇数位调用sub_7FF7401D3670函数
提取cipher
可得脚本:
crackme2
IDA打开后,有一串红色的指令
sub_14000105C函数点进去发现是变表的base64加密,尝试解了一下
发现是假的flag
那么只有从红色代码入手了
发现SEH触发异常,隐藏了真正的代码
将其nop掉就可以得到了
F5反编译得到
发现程序在运⾏时对sub_14000105C进⾏了异或解密(SMC),打个idapython给它patch掉
重新构建函数后得到
z3脚本(by Remore):
得到数据后解密:
again!(轴)
起手拿到两个bin文件,bin1.exe看图标是打包了python环境,尝试用pyinstxtractor提取⾥⾯的资源
打开py文件
这里注意到bin1.exe文件的python解释器是3.11版本,uncompyle6反汇编是python3.8及以下
因此需要找其他工具--pycdc
配置好pycdc后反编译bin1.pyc文件
结果还是没有反汇编完全,但是提到了要用这个去解密bin2文件,提到了md5,给了一串数据
用pycdas打开bin1.pyc得到字节码
丢给AI得到:
但是不知道用得到的数据应该如何与bin2操作,看了官方wp知道是异或(这个思路是guess的)
搓一个脚本:
得到的out.text文件打开,开头为MZ
改为exe文件
丢入IDA
分析过后能知道加密函数sub_1400010E0是魔改delta的xxtea加密
得到密钥
提取密文:
搓脚本得到:
- 作者:Sh4d0w
- 链接:https://sh4d0w.life//article/47630d06-1838-4aae-998d-f6e534b00ce8
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。