【wp】2020ChaMd5圣诞题
圣诞莫得安排于是跑去做了一下ChaMd5的圣诞题,不得不说让我这个逆向手很有做misc的成就感哈哈哈(误)。既然活动都结束了就来放一下wp吧,顺便整理一下批量处理文件的方法(pyinstaller批量解包+批量补文件头转格式+python和命令行的批量自动交互)。
So...begin!
下载题目压缩包,解压可以看到有59个exe。
(好家伙,这是考批量处理文件吧= =不得不说图标还挺好看的,费心了
不过看到自定义图标,逆向人第一个就想到了这些是用pyinstaller打包的exe啦。虽然也有可能是MFC,不过这里明显不是。
随便拖一个exe进ida,查看字符串看到有很多“py”字样,很明显就是pyinstaller这条路。
所以果断走流程解包(单个文件处理可以看->RE套路 - 关于pyinstaller打包文件的复原 | c10udlnk_Log,这里不细讲了,重点在多文件的批量处理)。
bat批量应用python脚本
这里写bat脚本
(*)指当前目录,%%i就像平时用的for(int i=0;......)的那个i一样是个变量,echo是为了看处理到哪个文件了。
处理结束后得到59个解压文件包
python批量提取
然后继续写脚本(这次用python,因为bat实在是不熟)把文件夹里的无后缀文件提取出来,复制到manyPYC文件夹下,方便后续处理。
一般是两个有用的,一个是struct,另一个文件名在entry point里会提到,一般是跟exe同名的,不过这里不一样(是数字。
另外这里线性扫描一定是先扫到以数字命名的文件再到同目录下的struct文件,所以不用担心num未定义的问题。
python批量补头修复pyc
根据uncompyle的反编译规则,批量添加magic number,并输出.pyc。
提取struct的前八个字节补到同名文件里去,并改名为.pyc。
注意:这里提前用010Editor看了一下以数字命名的文件和struct是差八个字节,有点特殊。
bat批量应用指令
然后写bat脚本执行:
得到59个python文件。
这里其实是出来像1.pyc.py
这样的文件,有强迫症的朋友(比如我)可以写个脚本把中间的.pyc去掉hhh。
python和命令行的批量自动交互
随便查看一个(比如1.py
)
可以看到,逻辑是先输入一个字符串,第一个check是md5值等于一个已给值(通过chamd5的网站查到该md5值为1.png,突然扣题?hhh),第二个check是简单的人机测试,都通过的话就会输出一张1.png
的图片。
这个地方的批量处理是我卡得最最最最最最久的一个地方 TvT
因为bat完全是现学,不会写,于是想到用python进行跟命令行的交互。
一开始查到的资料是用subprocess,但是读输出的时候死活读不进去(因为要过人机测试就得把式子读进去),去查subprocess文档没什么头绪,往后查又说是什么输出流阻塞balabala,总之没太看懂(tcl
后来好不容易看到有一篇提到说用pexpect。然后查了一些文档,诶,居然交互成功了!暴风哭泣!
理论上说前面用bat写的地方都可以改成用pexpect写,不过这不是之前还不知道嘛(。)
以及,多亏这里搞通了,后面xctf刚好遇到一道逆向是可以用这种命令行交互爆破的(不是pwntools能连上的那种特殊架构文件),直接拿脚本改改就能用,省了几个小时的搜索时间hhh。
于是开始写脚本进行多次交互啦,逻辑很简单:
得到59个png。
python连接png
当时做的时候因为懒得搞图像识别,所以直接手动记录这些图片上的字符。后来受到官方上发的wp的启发,感觉可以把这些png用PIL库连起来,就不用一张张点着看了。
这里我是把每个图片最左边6px提取出来横向拼接成一张图片,方便照着打hhh,调整了一下让字符大概居中排列(因为原图背景是透明的,所以这里提取出来就成黑的了= =。
png连接脚本:
通过观察可以发现,有用的字符都为红/绿/蓝的纯色,于是在脚本上做一些改进,把符合条件的像素点置黑,其余置白,更方便观察。
最后改进的脚本:
轻松记录下59个字符:https://www.chamd5.org/e1f10acc44f611ebb3780242ac130002.png
打开有
get flag
flag{ChaMd5_Ch33r_Up}
没想到这么晚交还水了个第三哈哈哈,溜了溜了(
__EOF__

本文链接:https://www.cnblogs.com/c10udlnk/p/14214071.html
关于博主:欢迎关注我的个人博客-> https://c10udlnk.top/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程