美文网首页
栈溢出 初级教学

栈溢出 初级教学

作者: Zero_0_0 | 来源:发表于2018-09-20 22:16 被阅读0次

一.初探栈溢出

1.1 在首先在文件夹里面创建一个c的程序 StackOF.c 内容如下图

#include <stdio.h>
#include <string.h>

int main()
{
    puts("SO plz qive me your shellcode");
        char buffer[256];
        memset(buffer,0,256);     #清除缓冲区数据
        read(0,buffer,256);        #输入
        vul(buffer);               #调用
        return 0;    

}
void vul(char *msg)
{
    char buffer[64];
    memcpy(buffer,msg,128);
    return;

}

memset: 内存初始化
buffer: 缓冲一般指指针或者数组
vul:函数的调用
strcpy
1 strcpy只能复制字符串。
2 strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束。
3 strcpy不仅复制字符串内容,还会复制字符串的结束符。
1.2 在终端 输入vim StackOF.c创建文件 使用gcc -c ./stackOF.c完成编译。和1.3中的编译是一个效果
1.3 gcc编译:终端输入gcc -m32 -no-pie -fno-stack-protector -z execstack -o pwnme stackOF.c 将生成一个pwnme的组件

图片.png
1.4调试 在终端输入gdb pwnme
1.5在vul函数下断点:breakpoint vulb vul
进入汇编的窗口如下命令 图片.png
1.6运行函数r或者run都也以 稍等一会会 输入ni单步进入找到函数的入栈口,和出栈口。计算栈的空间的大小。 图片.png 图片.png
1.7使用命令查看汇编代码的地址i r edx查看入栈口的初地址和结束地址 用高字节-低字节得出 76
图片.png 1.buffer的起始地址 = 0xffffd110
2.buffer的终止地址 = 0xffffd15c
buffer的差值为76

二. 分析数据

注:ldd +程序查看文件的偏移地址是否一直在发生变化
1.加一条命令关闭系统的的地址随机化命令
echo 0 > /proc/sys/kernel/randomize_va_space
2.在终端运行pwnme文件试试

图片.png
3.查看漏洞开启的缓冲策略
图片.png

三.构建填充数据

思路;当客户输入字符串,当字符串超出给定的空间就发生,数据溢出。
我们可以可以构建一个数据段,让我们想要的数据安全的执行下来,libc文件就是我们需要查找的构建数据重要的参数。
看看我偷瞄的图 嘻嘻

图片.png

构建完成如下 图片.png

根据图我们可以知道,我们需要构建的一个可以填充的数据流
注;buffer=填充字节+返回地址+shellcode

四查找填充的数据的字节大小

注:首先引入libc文件,这是c语言在编译的是候生成的一个内置文件
1.怎么找到libc文件?
注:先编译-下断点-运行-查找libc文件的位置
2.gdb一种编译方法

图片.png 图片.png

相关文章

  • 栈溢出 初级教学

    一.初探栈溢出 1.1 在首先在文件夹里面创建一个c的程序 StackOF.c 内容如下图 memset...

  • 浅说iOS为什么会上栈溢出

    简介 本文介绍了如下内容 栈的概念 为什么会发生栈溢出 栈溢出的几种栗子 怎么预防和发现栈溢出。 什么是栈? 从数...

  • 栈溢出简易指南

    栈 pwn 主题: 基本栈溢出 针对缓存区溢出防护的对策 shellcode 栈溢出的最终目的是执行shellco...

  • JVM

    1、一般什么情况会发生栈溢出、堆溢出 栈溢出(StackOverflowError) 1、栈是线程私有的,他的生命...

  • Canary机制及绕过策略-格式化字符串漏洞泄露Canary

    Canary主要用于防护栈溢出攻击。我们知道,在32位系统上,对于栈溢出漏洞,攻击者通常是通过溢出栈缓冲区,覆盖栈...

  • 2019-04-06 递归函数

    栈溢出

  • 缓冲区溢出提纲

    缓冲区溢出简单的来讲分为两种 栈溢出 堆溢出 那么什么是栈什么是堆呢 在这里简单谈一下对于堆和栈的理解 : 栈: ...

  • 无题-_-

    浅谈缓冲区溢出之栈溢出<上>

  • 栈溢出

    栈中压入数据栈顶指针地址变小 pop数据栈顶指针地址变大 也就是说栈底指针地址大于栈顶地址 EIP:扩展指令指针。...

  • 栈溢出

    function runStack (n) {if (n === 0) return 100;return run...

网友评论

      本文标题:栈溢出 初级教学

      本文链接:https://www.haomeiwen.com/subject/ooconftx.html