栈溢出实验

逆向分析-栈溢出原理与实践(修改邻接变量) 0day安全:软件漏洞分析技术,用非法超长密码去修改buffer的临界变量authenticated从而绕过密码验证程序 阅读详情


前言

由于不想做点鼠标的猴子,于是就自己尝试一下利用,结果拐弯就是一坑,这不是在踩坑的路上,就是在坑里摸爬滚打,太艰难了,幸亏有卓佬和晨佬指点,不然还在坑里

栈溢出原理

程序内存栈是从高地址往低地址分配内存的,正因如此,当程序在栈中,某个变量写入的字节超过了这个变量本身所申请的字节数时,会改变其他相邻变量的值,轻则可以使程序崩溃,重则可以使攻击者控制程序执行流程。

利用

代码

下面栈溢出实验的代码

#include <stdio.h>
void success() { printf("You Hava already controlled it."); }
void vulnerable()
{
  int val = 0;
  char s[10];
  gets(s);
  if (val == 1)
    printf("hunzi\n");
}
int main(int argc, char **argv)
{
  vulnerable();
  return 0;
}

编译生成exe后进行计算偏移

od分析

使用od打开该exe文件,下面为主要汇编代码,在主函数打断点后运行
在这里插入图片描述
在输入字符串后暂停,可以看到0060FEFC对应的00401400为vulnerable函数结束时跳转的地址。0060FEEC对应的是变量val的值,0060FEF8为vulnerable函数的基地址(EBP),从0060FEE2后存入用户输入的字符串,由于gets没有限制用户输入长度,所以可以构造输入来达到覆盖变量的值和函数返回地址
012345678916进制字符串为30313233 34353637 3839
在这里插入图片描述
在这里插入图片描述

实验

代码

由于在终端输入,x等字符都会算作一个单独字符,所以我们使用重定向来解决,先用c写一个简单payload程序

#include<stdio.h>
int main()
{
    int index = ; //填充字符
    int i;
    for (i = 0; i < index; ++i)
    {
        printf("A");
    }
    char a[100] = ""; //填充数据
    printf("%s", a);
    return 0;
}

修改变量

由于上面的代码的有一个变量val,我们就修改该变量。通过上面的内存栈图可以看到用户输入的字符串后面就是val变量的值,也就是说,我们需要先填充10个字符后紧跟上我们要改的数值,内存中采用的是小端存储,所以00000001在内存的形式为\x01\x00\x00\x00
在这里插入图片描述

修改返回地址

根据上面的计算,到返回地址需要填充26个字符,success函数的地址为004013B0,修改payload代码数据,生成exe
在这里插入图片描述

总结

刚开始用vs搞,死活无法成功,后来发现这得用gcc编译器,vs的编译器似乎有某种机制,不按正常套路出牌,把我还搞蒙蔽了,还有一些保护机制也要进行关闭,否则也没有办法成功,建议大家在linux上尝试,还有strcpy、strcmp等函数也存在这样的漏洞

大家可以关注菜鸡的公众号,有什么好想法也可以让我学习一下,有什么问题可以一块解决,由于二维码违规,下面是base64编码的文字

5b6u5L+h5YWs5LyX5Y+34oCc5a6J5YWo5re35a2Q4oCd77yM5Y+v5Lul55So5b6u5L+h5pCc5LiA5pCc77yM5q2j5Zyo5a6M5ZaE5LitLi4uLi4u

简单实现栈溢出实验(IDA) 有关栈溢出的相关知识 最近学校讲到了栈溢出,并有一道很基础的题,在此可以记录一下,感兴趣的人可以了解了解 阅读详情

相关推荐

网络安全实验 缓冲区栈溢出实验 Ollydbg

网上找的实验都没怎么理解,最后捣鼓出来了 参考博客:https://blog.csdn.net/fightte/article/details/109010953 原理 数据和地址是连续存储的,跳转地址可以被覆盖,当覆盖的内容为特定地址时就会跳转到特定的函数执行攻击 Ollydbg使用 F2 => 断点 F8 => 下一条语句 F9 => 执行到下一个断点 ctrl+F2 => 重新运行 找函数地址 我用的是吾爱的版本,没法直接在注释里面找到函数名 解决方法:在函数中输出语句,然.

qq_49006646的博客 6994

栈溢出的简单实验

实验用到first和first.c文件,first中的代码如下,可以看到用于攻击的wuwu()函数是永远不会被调用执行的;但是gets()是一直读取输入的字符直到读取\n才停止,由于gets()没有读取长度的限制,可以通过读取超出规定长度的字符来修改栈帧中的返回地址,从而达到攻击目的; 右键first,使用IDA打开,打开之后可以看到是这样的汇编指令,按Tab键可以看地址,空格可以看反编译代码; main()函数 wuwu()函数 进入运行vbox虚拟机,打开虚拟机后先挂载共享文件夹,挂载后才能使用共

weixin_43894468的博客 1494

对StackOverFlow.exe的逆向与栈溢出实验报告

逆向工程第一次作业 对StackOverFlow.exe的逆向与栈溢出渗透实验报告 一、StackOverFlow.exe简述 StackOverFlow.exe程序为用户提供了一个可以向内存键入数据的端口,本身是一个检验输入的数据与默认的数据是否一致的检测数据的程序,可是由于键入数据的过程中程序并没有检测键入的字符串的长度,导致用户可以通过输入超出规定范围的字符串来恶意覆盖内存中的一些数据,导致出现安全问题 下面是这个程序的C语言源代码 #include<stdio,h> #include&l

EloflyS的博客 827

【软件与系统安全】上机作业practice1-栈溢出利用的分析

软件与系统安全上机作业——栈溢出利用的分析

Wking 1238

从入门到精通:激光器恒流驱动电路的设计与选型指南

本文深入解析了激光器恒流驱动电路的设计与选型。文章从基础电路原理讲起,对比了简易恒流源与高精度运放反馈方案的优劣,并重点阐述了如何为不同功率与精度要求的激光器项目选择合适的恒流驱动方案,强调了恒流源对于保障激光器稳定工作、防止热失控及延长寿命的核心作用。

grafana6viz的博客 711

C#构建企业级AI Agent框架:从架构到实践

AI Agent作为智能系统的核心组件,通过结合大语言模型(LLM)与规划引擎,实现了从简单对话到复杂任务处理的跨越。其关键技术包括记忆系统(RAG架构)和工具调用机制,前者通过向量数据库实现知识检索,后者则扩展了Agent的功能边界。在企业级应用中,这类系统能显著提升效率,如HR政策查询、IT故障排查等场景。C#凭借其强类型和高效性能,成为实现这类系统的理想选择,特别是在需要与现有企业系统集成的场景下。通过合理设计工具接口和安全防护措施,可以构建出既强大又可靠的智能助手。

weixin_33672109的博客 383

ssm插入数据时候栈溢出_实验三 栈溢出的漏洞的认识及利用

一、实验目的 1、了解栈溢出漏洞定义及原理; 2、使学生掌握如何使用栈溢出漏洞利用。二、实验环境VC++6.0、ollydbg逆向工具等。三、实验内容及步骤: 1、了解栈的基本原理 2、对栈溢出漏洞进行模拟操作 3、栈溢出漏洞实战练习四、实验过程1. 什么是栈栈是一种机制,计算机用它来将参数传递给函数,也可以用于放入局部函数变量,函数返回地址,它的目的是赋予程序一个...

weixin_39874589的博客 280

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

栈溢出逆向实验

栈溢出逆向实验 一、实验背景 1.内存的不同用途 缓冲区溢出是在大缓冲区中的数据向小缓冲区复制的过程中,由于没有注意小缓冲区的边界,“撑爆”了较小的缓冲区,从而冲掉了和小缓冲区相邻内存区域的其他数据而引起的内存问题。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。要透彻地理解这种攻击方式,我们需要回顾一些计算机体系架构方面的基础知识,搞清楚 CPU、寄存器、内存

taylorswift的博客 1136

`全网最细!! 入门必看Git教程链接:https://gitee.com/all-about-git`

全网 Git 入门教程 gitee.com。如果显示The requested URL returned error: 403错误,那就表示没有和window本地建立token令牌

qq_37855368的博客 3749

java链接opc报异常org.jinterop.dcom.common.JIException: Access is denied解决

记录一下这次从发现问题到解决问题的过程 项目是通过java链接OPC,读取数据,并且发送数据的 程序一直运行正常,最近客户反馈说无法读取数据,通过查看,发现访问异常了。花了2天的时间才解决了这个异常。 org.jinterop.dcom.common.JIException: Access is denied, please check whether the [domain-username-password] are correct. Also, if not already done please c

机器学习菜鸟 1万+

C语言栈溢出实验

摘要 本实验通过VC6.0环境演示了C语言栈溢出原理及危害。实验分为两部分:(1)构造栈溢出,当输入超过缓冲区长度时,多余数据会覆盖相邻变量内存;(2)密码验证实例分析,展示如何通过溢出篡改关键变量实现验证绕过。实验表明,未经验证的strcpy等函数可能被利用来执行恶意操作,建议采用边界检查等防范措施。实验直观呈现了栈溢出的安全风险,为理解缓冲区溢出攻击提供了实践基础。

2301_80545762的博客 876

大模型学习路线之多模态模型

​ (Frankly speaking,博主太懒了)章节一只对CLIP、BLIP、BLIP2、InstructBLIP进行了整理,章节二以CLIP、VisualGLM作为实践案例。​ 实际上多模态模型除了CLIP、BLIP、BLIP2、InstructBLIP,还有LLaVA、miniGPT4,以及国内清华的VisualGLM、阿里的Qwen-VL等。(更多多模态原理可以看文末的参考说明)一、多模态模型 & 理论。

2401_86435672的博客 2290

(二)简易实现栈溢出实验(OllyDbg)

开头 上一篇博客讲到了栈溢出,关于做栈溢出实验,可使用的工具是反汇编工具。 之前讲到了IDA的实现: 点击进入IDA实现栈溢出博客 感兴趣的也可以看看。 现在说到老师上课可能更喜欢用的反汇编软件OllyDbg,来实现一下简单的栈溢出实验。 软件介绍:OllyDbg 摘自百度: <<<OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩

fightte的博客 4349

天龙八部源码深度解析:从宠物系统到副本机制(C++游戏开发实战)

本文深度解析《天龙八部》源码架构,重点剖析宠物系统状态机实现与副本动态加载机制等核心模块。通过C++代码示例展示宠物AI状态迁移逻辑和副本场景管理技术,为现代游戏开发提供兼容性改造方案与设计启示。适合游戏开发者学习经典MMORPG的工程化实现路径。

weixin_29011239的博客 386

IgH EtherCAT 从入门到精通:第 5 章 多主站与系统集成配置

本文介绍了 EtherCAT 多主站配置与系统集成方法。主要内容包括: 多主站实例配置原理:通过内核模块参数指定多个主站设备,每个主站独立管理一条 EtherCAT 总线,最多支持32个主站实例。 配置文件详解:在/etc/ethercat.conf中通过MASTER<X>_DEVICE变量定义各主站绑定的网卡或MAC地址,支持冗余备份配置。 系统服务集成:提供了systemd服务单元文件和传统init.d脚本两种方式实现开机自启动和管理,并建议通过override文件定制服务依赖关系。 架构示

从事嵌入式linux android驱动开发,拥有全栈能力 352

shellcode之简单的栈溢出实验

  最近看了0day和The shellcoder's handbook,对栈溢出有了些了解。并且对书上的实验也自己做了些。自己动手才真正把看到的知识变成自己的。   今天在看handbook的时候,按照书上的代码来时间操作,发现实现不聊,百思不得其解,最后自己用ollydbg分析了下,把它改了改,顺利的跑了起来,达到了自己的目的。 很是高兴。凡事还是要多琢磨,多去研究,总会得到些意想不到的东...

weixin_30715523的博客 144

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【软件与系统安全】上机作业practice1-栈溢出利用的分析_简单栈溢出实验

本次栈溢出攻击实验,有以下关键点:在编译时使用了(启用可执行堆栈)和(禁用栈保护)选项程序运行时关闭 ALSR(地址空间随机化),导致 shellcode 的地址可以直接确定stack 程序中的 bof 函数存在栈溢出漏洞,修改 bof 函数的返回地址后,可以使程序一步步跳转到 shellcode 位置,从而实现栈溢出攻击,得到shell学习计划安排我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

zzz6583zz的博客 966

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ubuntu下成功进行栈溢出实验的先决条件

偶尔想在ubuntu下做个栈溢出的实验,很遗憾每次在gbd下运行都会报错: Program received signal SIGSEGV, Segmentation fault.首先想到的就是gcc编译时可能对程序启用了不可执行栈机制,遂用参数关闭该机制,运行后错误依旧: gcc -fno-stack-protector -g -o execstack execstack.c多次调试运行排

lixiangminghate的专栏 2439

网络空间安全导论实验——简单栈溢出

网络空间安全导论实验——简单栈溢出。

zinc_96的博客 580

kali下栈溢出实验和一些tips

首先我的实验环境和教程均来自http://staff.ustc.edu.cn/~sycheng/ssat/,我这里讲的是《栈溢出 & 整数溢出》这个课程的实验 实验开始,首先你要准备好环境,我的操作系统是kali-linux-2017.1-i386 然后你要安装Linux下pwn都会用到的工具:peda,安装方法是: git clone https://github.com/longld/p

一个码农的笔记 6461
上一篇: shiro反序列化之长度限制
下一篇: BurpSuite插件分享
安全混子
博客等级 码龄5年 1万+粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全混子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值