2022年4月网刃杯
freestyle:
照例扔入 exeinfope 中查看信息:
.
.
64 位 ELF 文件,照例扔入虚拟机中运行一下,查看主要回显信息:
.
.
照例扔入 IDA64 中查看伪代码,有 main 函数看 main 函数:
.
.
最终 flag 就是 3327105 的 md5 值:
比较有意思的是一开始我这样提交时并不对,搞到我以为是其它数,乱想了很久,但是后来又对了,浪费了太多时间,得吐槽一下。
flag{31a364d51abd0c8304106c16779d83b1}
.
.
Re_function:
做这道题时我有很大的思想上的问题,比如两个文件,一个 EXE 一个 ELF 文件,按照以前的做题习惯我竟然以为是同一个文件的两个不同版本,是为了照顾那些只有 LINUX 系统的同学的,所以最后只解出了 fun1 后就提交了,提交错误还找不到原因。当然这其中也缺少对第一层密文是 base64 变表的怀疑。
第二个就是自己学 PE 文件结构学啥了,看到 fun1 的 .text 段代码 F5 反汇编不出来还以为是使用了什么高深的段属性动态修改技巧,傻B地以为 .code 段才是代码段,然后一直分析汇编代码,真的是越来越糊涂了啊!!!一直没看到那个 +1 的反静态编译。
犯的错误说完了,进入正题了~
.
.
首先解压缩包:
.
照例扔入 exeinfope 中查看信息:
.
.
32 位 EXE 文件,无壳,照例运行一下,查看主要回显信息:
.
.
照例扔入 IDA32 中查看伪代码,有 main 函数看 main 函数:
.
.
直接搬出解密代码:
secret=[ 0x64, 0x71, 0x54, 0x54, 0x64, 0x78, 0x74, 0x78, 0x64, 0x41,
0x40, 0x48, 0x70, 0x6D, 0x18, 0x4A, 0x41, 0x78, 0x66, 0x72,
0x41, 0x78, 0x5E, 0x4E, 0x5D, 0x52, 0x0E, 0x3D]
flag=''
for i in range(0,len(secret),2):
flag+=chr(secret[i]^0x37)
flag+=chr(secret[i+1])
print(flag)
.
.
同理第二个文件分析:
.
.
提取出变表后扔入加密解密小工具中解密即可:
.
.
定时启动:
这种题目设置对应时间运行即可,不过这题中一次不成功则要删除在当前目录生成的 Readme.txt
。
(因为测试出程序是通过判断当前目录下有无 Readme.txt 来判断程序是不是第二次运行,所以以后遇到时间类多出文件的就要保持警惕了,最好一直用原始文件来试)
.
.
第 4 题暂未复现~