Android逆向分析之SO基础(简单的缓冲区溢出)
zeroday
2017-04-29 03:38:37
338
0
0
## 1.编写基本的C语言代码 /************************************************************************* > File Name: overflow.c > Author: ZeroDay > Mail: baoshengbin@gmail.com > Created Time: Sat 29 Apr 2017 12:58:07 AM EDT************************************************************************/ #include<stdio.h> int main(void){ char pass[8]; int flag; printf("enter the password:\t"); scanf("%s", pass); if(flag) printf("password incorrect!\n"); else printf("congratulation!\n"); return 0; } ## 2.编译C代码 ### 命令:gcc overflow.c -o overflow  ## 3.使用工具radare2,反编译可执行的二进制文件 ### 命令: radare2 overflow //overflow为二进制文件  ## 4.汇编代码分析  ## 5.输入判断栈内容的变化  ## 6.总结 ### 栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary.
立即体验
x