华为ctf2020题目复现
crash
1.通过阅读其他的WP得知得到的是一个coredump文件,这里当时拿到文件都不知道怎么下手。
可以通过linux 的readelf -h命令来查看文件类型

2.直接ida分析

可以看到函数的符号表是缺失的。
3.从coredump文件中提取出二进制文件。
通过winhex打开coredump文件,利用搜索字符串的功能可以看到在文件中有多个"ELF"的标志。而coredump文件是程序在崩溃时把程序的相关数据保存起来是文件。
观察这几个文件头会发现有一个文件头十分完整

然后把这个文件头前的所有字节通过winhex剪去。得到如下:

4.再次ida分析

可以看到函数的符号表并不完整,手动修改符号表。
5.修改函数符号表
首先可以看到在末端有一段这样的东西

然后通过点击相应偏移数字移动到了这一段

可以发现那些不能识别出来的函数是因为对应的数据错误。例如strncpy函数存的数据就是extern区中strncpy函数的地址。
所以可以通过手动修改值来修复。

这里偷懒了没有全修完,不过也不影响分析。
6.ida再次分析


这里第一时间没有看出是md5加密。

百度了一下MD5的算法是怎样的才发现是MD5。
7.流程
password应该就是flag,程序把输入的password首先每位异或0x17,然后在进行md5后在对比。

浙公网安备 33010602011771号