最近上软件安全与脆弱性分析课程,对freenote小程序(貌似是某一年的CTF题)进行了依次Poc分析。感觉很有意思,在这里对分析过程进行一个总结。
1.程序功能介绍
给定的程序运行界面如上图所示,大体上分为五个模块他们分别为:(1)列出已经存储的记录、(2)添加新的记录、(3)编辑指定的记录、(4)删除已经存储的记录、(5)退出程序。
将note程序加载到ida中,可以得到程序的汇编代码部分,动态调试后可以得到程序初始化后的开始位置:
在ida中进入到不同的功能函数中,利用反汇编可以得到功能函数的伪代码部分分别如下:
(1)列出已经存储的记录功能函数的伪代码:
(2)新建记录功能函数的伪代码:
(3)编辑已经存储记录功能函数的伪代码:
(4)删除已有记录功能函数的伪代码:
(5)退出程序功能函数仅调用库函数puts()实现字符串“bye”的输出;
同时,根据note初始化函数,分析note存储结构我们可以推断其大致如下: