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

这篇具有很好参考价值的文章主要介绍了编写并调试一个堆栈溢出的程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

编写存在栈溢出漏洞的 c++ 程序:

stack_overflow.cpp

#include <iostream>
using namespace std;
void hello(){
    char name[8];
    scanf("%s",name);
    printf("hello,%s!\n",name);
}
void stack_overflow(){
    printf("Aha,suprise!\n");
}
int main(){
    hello();
    return 0;
}

对于 GCC 编译器,可以尝试使用 -fno-stack-protector​ 选项来禁用堆栈保护。

使用 -g ​使其可调试

编译命令:g++ stack_overflow.cpp -o stack_overflow -g -fno-stack-protector

文章来源地址https://www.toymoban.com/news/detail-843386.html

使用 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

​​

到了这里,关于编写并调试一个堆栈溢出的程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.cnblogs.com/l1fan/p/18095074/write-and-debug-a-program-overflowing-zuzpoy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1.1 编写一个简单的C++程序

      博主介绍:爱打游戏的计算机专业学生 博主主页:夏驰和徐策 所属专栏:夏驰和徐策带你从零开始学C++ 这段话解释了一个C++程序中的`main`函数的基本结构和功能。 它告诉我们以下几点: 1. C++程序的入口点是`main`函数,操作系统通过调用`main`函数来运行程序。 2. `main`函数

    2024年02月10日
    浏览(13)
  • 【案例2】编写一个智能购物计算小程序

    编写一个智能购物计算小程序,在一家商店有书本、铅笔、橡皮、可乐、零食五种商品,商品价格如下。书本12元,铅笔,1元;橡皮,2元;可乐,3元;零食,5元。假如小明带了20元,且必须购买一本书,剩余的钱还可以购买哪种商品,可以购买几件,购买完后又能剩余多少

    2024年01月21日
    浏览(9)
  • 二、编写第一个 Spring MVC 程序

    创建 maven 项目,以此项目为父项目,在父项目的 pom.xml 中导入相关依赖 在父项目上右键创建子项目,创建完成之后,在子项目上右键选中 Add framework support 找到 Web Application 勾选上 具体步骤 勾选完之后项目会出现 web 目录 配置 web.xml 勾选完 Web Application 之后会在 web/WEB-INF 路

    2024年02月13日
    浏览(7)
  • 【Linux】编写第一个小程序:进度条

    1.1.1 sleep() 作用:让程序休眠指定秒数,如: sleep(3); //让程序休眠3秒 与 Windows 上的 Sleep() 函数不同 需要包含头文件 unistd.h 1.1.2 fflush() 作用:刷新缓冲区 需要传入一个流 需要包含头文件 stdio.h 1.1.3 usleep() 作用:让程序休眠指定微秒,如: usleep(100000); //让程序休眠100000微秒(

    2024年02月02日
    浏览(9)
  • 【JSDoc&vscode】使用JSDoc、在vscode中开启node调试、使用vscode编写运行Python程序

    JSDoc是JavaScript的一种注释语法,同时通过JSDoc注释也可以规避js弱类型中不进行代码提示的问题 图形展示JSDoc的效果:  上述没有进行JSDoc,然后我们a点什么 是没有任何提示的 上述就是加上 JSDoc的效果 常用的 vscode 其实内置了 jsDoc, 只需输入 /** 然后就会有提示,然后直接按

    2024年02月11日
    浏览(7)
  • WEB攻防-JS应用&算法逆向&三重断点调试&调用堆栈&BP插件发包&安全结合

    1、JavaScript-作用域调用堆栈 2、JavaScript-断点调试全局搜索 3、JavaScript-Burp算法模块使用 简单来说就是运行后相关的数据值 简单来说就是代码的执行逻辑顺序 这四种方法针对不同对象(搜索一般用来对付简单的,复杂点的就得用断点了) -代码全局搜索 -文件流程断点(执行的代码

    2024年02月05日
    浏览(8)
  • Python编写一个程序来计算 BMI 值。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、 BMI 是什么? 二、使用步骤 1.简单代码 2.结果 总结 Python编写一个程序来计算 BMI 值: 小時候都會算的BMI指數,用身高作為基準,計算出你的體重是過重、標準還是過輕,但是因為BMI指

    2024年02月07日
    浏览(8)
  • python制作小程序制作流程,用python编写一个小程序

    这篇文章主要介绍了python制作小程序代码宠物运输,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。   1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5 6 7 def __init__(self):8 #创建主界面 9 self.root =tkinter

    2024年02月14日
    浏览(9)
  • GAMS---典型优化模型和算法介绍、GAMS安装和介绍、GAMS程序编写、GAMS程序调试、实际应用算例演示与经验分享

    优化分析是很多领域中都要面临的一个重要问题,求解优化问题的一般做法是:建立模型、编写算法、求解计算。常见的问题类型有线性规划、非线性规划、混合整数规划、混合整数非线性规划、二次规划等,优化算法包括人工智能算法和内点法等数学类优化方法。算法编写

    2024年02月16日
    浏览(9)
  • 软件崩溃时Visual Studio中看不到有效的调用堆栈,使用Windbg动态调试去分析定位

    目录 1、问题说明 2、使用Windbg查看崩溃时详细的函数调用堆栈

    2024年02月05日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包