经过了清明节和发烧...今天开始继续学习。
面试时,面试官问了我一个问题:如果给你一个程序你会如何挖掘漏洞?
我的回答就不说了,下面上一些整理来的资料:
主要分为三个步骤:
1.枚举程序入口点
2.寻找漏洞
3.尝试利用漏洞
其中:较为古老的代码部分,用于连接的两个团队的接口部分,未去除的测试代码,内部请求(IPC)
挖掘前还要再收集一些信息:
1.执行流程
2.数据流程 包括输入与输出
3.数据格式 包括文件类型或者协议
4.编程语言
5.函数
6.运行环境
7.开发者习惯
- IDA 静态分析利器,从汇编层面让你快速理解程序的逻辑;
- Ollydbg 动态分析神器,替换内存数据,定位程序输入输出点,没他可不行;
- api-monitor 监控程序的调用函数,也可直接查看程序内存数据,分析程序必备;
- ExeinfoPE 查看PE程序的结构,还能查看是否加壳和使用的编程语言;
- TUPortable 监控程序安装结构,写入了哪些文件,写入了那些注册表之类;
- Wireshark 分析数据包必备;
- Python or Go 以上软件可以都不使用,但必须要会python 或者 Go, 无论是生成污数据,还是快速编写漏洞验证程序,都是必不可少的。