基础知识
bug & exploit
什么是bug?
程序错误,是程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。
什么是漏洞?
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
漏洞和bug的区别:
漏洞专指安全方面的问题,Bug则不限于安全方面。漏洞通常不影响程序正常功能,但是 bug 会影响程序正常功能。
漏洞的挖掘,分析和利用
“灰”盒测试— fuzz :Fuzzing技术总结(Brief Surveys on Fuzz Testing)
通过 poc 代码重现漏洞发现的场景,同时使调试器观察漏洞的细节,或者利用工具找到漏洞出发点
漏洞公布
两个机构
CVE 和 CERT
二进制文件概述
PE 文件格式
*.exe *.dll
典型 PE 文件中包含的节如下:
.text 编译器产生,存放二进制机器代码,反汇编和调试的对象
.data 初始化的数据块,如宏定义、全局变量、静态变量等。
.idata exe 文件使用的动态链接库等外来function and file information.
.rsrc 存放程序资源
还可能出现的节: .reloc .edata .tls .rdata
虚拟内存
进程 》 储户
内存管理器 》银行
物理内存》钞票
虚拟内存》存款
PE 文件与虚拟内存之间的映射
文件偏移地址
file offset
数据在 PE 文件中的地址
装载地址
image base
PE 装入内存时的地址
虚拟内存地址
virtual address
PE 文件中的指令被装入内存后的地址
相对虚拟地址
内存地址相对于映射基址的偏移量
tips:在这里一定要注意一点问题,这里的虚拟内存和平常系统提示的“虚拟内存空间不够”中的虚拟内存不是同一个。
可以用到的学习工具 lordpe
工具介绍
OllyDbg
SoftICE 工作在 ring0 级,可调试驱动等内核对象 可以在看雪学院找到 softice的命令手册和使用教程
WinDbg 介于ollydbg和softice
IDA pro
二进制编辑器
ultraedit
hex workshop
winhex
010 editor
辅助工具
vmware
python