华为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后在对比。

posted @ 2021-05-01 21:55  mio_yy  阅读(342)  评论(1)    收藏  举报