近期某大学在公告版中发送了查询学生考场的 EXE 文件,一开始我以为是钓鱼的,后来经多方确认属实。
经过断网确认后可知,数据打包在应用内部。
首先尝试了 binwalk/foremost 无过,只分离出一些 bmp 文件
拖进 IDA,找到动态链接库但是显示 unknowlib,静态数据中也没有相关信息。
这里可以采用的方式有两个
1. IDA 动态调试
2. DUMP 内存
这里使用的是第二种方法,DUMP 内存有多种方法,可以采用 VS 的 DEBUG 工具进行内存 DUMP,但是我们借助任务管理器简单创建完整的转储文件。
Task Manager->Processes->Right Click->Create dump file
通过 WinHex 查看转储文件,存在相应的明文数据
数据头为
“`… … 49 00 43 00 4F 00 4E 00“`
数据尾为
“`06 00 00 00“`
写脚本提取后分隔导出为 csv 文件即可
下面为 Payload
with open('memory.dmp', 'rb') as f: data = f.read() head=data.find(b'M\x00A\x00I\x00N\x00I\x00C\x00O\x00N\x00') data=data[head+16:] tail=data.find(b'\x06\x00\x00\x00') data=data[:tail] data=data.split(b'\x0d\x0a') with open('memory.csv', 'w') as f: for item in data: item=item.decode('gbk') f.write(item.replace('@',',')+'\n')
原本为了保护学生隐私的设计反而最终成为了泄露隐私的地方。
这里的信息还包括身份证后三位,也就是说我们可以通过户籍地 + 生日反推出最后一位。
具体有如下解决方法:
不存储明文,只存储加盐后的学号 + 姓名 + 身份证后三位的哈希 /md5 信息再查询,最后的是为什么不能在线查呢?很急。
PS1: 后缀改成 txt 可以直接读出数据
PS2: 用 Notepad++ 以 GB2312 读写可以直接读出所有数据