软件系统安全赛复现
re1
拿到题目后讲Loader放到ida中,搜索字符串发现base64的表
点进去发现长字符串但是不知到是什么意思,根据形式(末尾有=)推测是base64加密
先把Loader和video放在linux环境中运行
得到了一个stager.pyc
但是发现它是空的
放到010中可以看到它是delete的base64解码
推测另一大段也是pyc,先把它用在线工具解码一下,
发现它的前几位是420D0D0A,符合pyc特征,
把它们编译成.pyc文件,用反编译后得到py脚本
1 | # Decompiled with PyLingual (https://pylingual.io) |
根据脚本可知,它把程序写在了视频里
用ffmpeg抽帧后得到一些图片,根据0对应白色,1对应黑色,然后和10101010异或
写出解密脚本
1 | from PIL import Image |
得到一个elf,运行它说每个哈希对应一个ascii码
用在线工具cmd5一个一个算一下
得到flag:
dart{2ab1fb8a-b830-45e7-8830-66c7e3b3e05a}
re2
拿到文件后用die查壳,然后它说”like upx”
放进010里打开
感觉是魔改,但是修改了文件头之后还是不能用upx解包
于是用xdbg手动脱壳
发现它先在这里断下,往上看会看见几个pop,在最后一个pop断一下观察一下,重新运行该程序,发现还是现在ret处停下,继续运行后才在pop处停下,程序又回到这里,继续追踪
有一个无条件跳转,说明该程序的入口点就为4014e0
用dump出来
有一个坑是
一直以为是自己没脱成功,没想到是程序里有一个条件判断输出这句话
把jz改成jnz即可
发现该程序的原理是让我们输入一串字符然后再我们某个目录下生成一个exe文件

找到该文件
在字符串里找到enter the key
在字符串里面找到.mydata和.hello但是点进去是乱码
于是动调一下,发现hello这里变成了可读汇编,把他们全部反汇编重定义成函数
404ef0就变成了函数
发现了aes的s盒
定位到mydata里存的是存的是key,iv,和密文
因为aes是对称加密,所以我们可以让密文再走一遍404ef0的函数
在xdbg里进行patch,
把栈顶在内存窗口查看即可看到flag
- Title: 软件系统安全赛复现
- Author: LinX
- Created at : 2026-03-19 21:59:35
- Updated at : 2026-03-19 22:07:18
- Link: https://redefine.ohevan.com/2026/03/19/软件系统安全赛复现/
- License: This work is licensed under CC BY-NC-SA 4.0.