在 CentOS 上用反汇编定位漏洞的实操流程
一、准备与保护机制检查
二、静态反汇编筛查危险点
三、动态调试验证与触发
四、常见漏洞模式与汇编指纹速查
| 漏洞类型 | 常见汇编/调用指纹 | 快速验证思路 |
|---|---|---|
| 栈溢出 | 固定长度 sub esp, N 后大量 mov [ebp-xx], al/byte ptr [esi+edx] 等写入;函数尾声 leave; ret;调用 strcpy/memcpy 向局部缓冲写入 | 输入超长数据,观察 EIP/RIP 是否被覆盖、是否出现段错误 |
| 格式化字符串 | 调用 printf(fmt, …) 且 fmt 来自外部输入;常见 push eax(指向用户输入)后 call printf | 输入包含 %x/%p/%s/%n 等格式化符,观察是否泄露栈内容或改写内存 |
| 整数溢出导致堆/栈溢出 | 计算分配/拷贝长度时发生 add/mul 后未检查溢出;随后使用结果作为分配大小或拷贝长度 | 构造极大/极小数值触发分配异常或拷贝长度异常 |
| 危险函数直接调用 | 直接 call strcpy/sprintf/gets/system 等 | 追踪参数来源,尝试超长输入或特殊字符触发异常行为 |
五、内核与驱动场景的补充
合规与安全提示