编写并调试一个堆栈溢出的程序

打印 上一主题 下一主题

主题 867|帖子 867|积分 2601

编写并调试一个堆栈溢出的程序

编写存在栈溢出漏洞的 c++ 程序:
stack_overflow.cpp
  1. #include <iostream>
  2. using namespace std;
  3. void hello(){
  4.     char name[8];
  5.     scanf("%s",name);
  6.     printf("hello,%s!\n",name);
  7. }
  8. void stack_overflow(){
  9.     printf("Aha,suprise!\n");
  10. }
  11. int main(){
  12.     hello();
  13.     return 0;
  14. }
复制代码
对于 GCC 编译器,可以实验使用 -fno-stack-protector​ 选项来禁用堆栈掩护。
使用 -g ​使其可调试
编译命令:g++ stack_overflow.cpp -o stack_overflow -g -fno-stack-protector​

使用 gdb 查看 stack_overflow 函数的地址:0x000055555555520e
命令是  info addr stack_overflow​
查看ASCLL码表可知:0x0e 对应的字符是 SO

在终端中,你可以直接输入 SO 字符的 ASCII 码,即按下 Ctrl+V,然后输入 Ctrl+N(对应 ASCII 码的 0x0E),这样就能够输入 SO 字符。
所以该地址的 ASCLL 编码为:^NRUUUU (小端序)


前面用 16 个'a'用来覆盖 name 缓冲区和栈上的 EBP,后面用 ^NRUUUU 覆盖栈上的 EIP

云云即可篡改返回地址,执行 shellcode
​​


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表