缓冲区溢出

20199319 缓冲区溢出漏洞试验

為{幸葍}努か 提交于 2019-12-11 23:22:20
缓冲区溢出漏洞试验 一、实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备 输入以下命令安装用于编译32位C程序的软件包: sudo apt-get update sudo apt-get install -y lib32z1 libc6-dev-i386 sudo apt-get install -y lib32readline-gplv2-dev 三、实验过程 3.1 初始设置 1、Ubuntu 和其他一些 Linux 系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,使用以下命令关闭这一功能: sudo sysctl -w kernel.randomize_va_space=0 2、为了进一步防范缓冲区溢出攻击及其它利用 shell 程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个 Set-UID 程序调用一个 shell,也不能在这个 shell 中保持 root 权限,这个防护措施在 /bin/bash 中实现。linux 系统中,/bin

缓冲区溢出攻击

寵の児 提交于 2019-12-05 15:25:34
一、缓冲区溢出攻击的原理   程序运行时,其在内存中的存储可划分为四个区:代码区、数据区、栈区、堆区,除了代码区,其他三个区都是缓冲区。栈保存了当前正在执行的函数的相关信息: 其中,返回地址是调用程序指令保存在内存中的地址,计算机执行完当前函数以后,将根据返回地址找到下一个程序指令并执行。   栈存储内容时是从下往上填充的,所以函数传参时,如果传递的数据大于参数缓冲区所准备的空间,超出空间的部分数据会覆盖下一个可用的内存地址,即返回地址缓冲区。缓冲区溢出攻击就是通过设置攻击步骤,使得参数缓冲区溢出,并在返回地址缓冲区中填充恶意代码的特定地址,这可能是同一台服务器上的其他内存地址或者保存在远程服务器上的程序指令,这样计算机执行完当前函数以后,就会根据返回地址缓冲区中的恶意代码地址找到恶意代码并执行,攻击者目的即可达成。 二、缓冲区溢出的后果 1. 注入式攻击:允许黑客插入代码、SQL语句或者任何可以注入应用程序的数据。 2. 特定代码攻击:在这种攻击中,黑客可以获得服务器操作系统的直接和根用户级别的访问,这样他们可以完全控制服务器。 3. 拒绝访问攻击:可以导致服务器在执行恶意代码后陷入困境(通常是一个无限循环或其他没有意义的指令),这样服务器就没有资源去执行其他正常任务。 4. 远程探索:也就是你的服务器被作为中间转接点来攻击其他服务器。 三、PHP规避缓冲区溢出攻击的理论基础  

线程和进程

我怕爱的太早我们不能终老 提交于 2019-12-03 13:27:16
以下内容转自于 https://www.cnblogs.com/coder-programming/p/10595804.html 1.进程与线程之间有什么区别? 2.进程、线程都各有什么特点? 3.进程之间的是怎么进行交互的呢? 4.什么是缓冲区溢出? 5.进程之间如何进行交互? 6.线程之间如何进行交互? 上面的面试题可以看出,其实都是一回事,只是换了一种提问方式,只要我们能掌握核心要点,随便面试官怎么提问,我们都能轻松应对! 1. 小栗子: 我们生活中有许许多多关于进程与线程的小栗子,比如:1.我们使用打开一个微信软件,这个时候就开启了一个进程, 当我们在微信里面进行各种操作(查看朋友圈,扫一扫...),这么多的操作就是线程。 所以我们可以说“进程”是包含“线程”的,“线程”是“进程”的一个子集。 来源百度百科: 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 线程(thread) 是操作系统能够进行运算调度的最小单位

Linux下简单的缓冲区溢出

匿名 (未验证) 提交于 2019-12-02 21:59:42
缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 CrossFire 多人在线RPG游戏 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞 (服务端) 调试工具 edb 运行平台 kali 2.0 x64虚拟机 Linux中内存保护机制 DEP ASLR 堆栈 cookies 堆栈粉碎 漏洞太老,避免测试中我们的虚拟机被劫持,可以通过iptables设置目标端口只允许本地访问,如果网络是仅主机可以省略 #4444端口是一会开放的测试端口,只允许本地访问 iptables -A INPUT -p tcp --destination-port 4444 \! -d 127.0. 0.1 - j DROP #13327是服务端端口,只允许本地访问 iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0. 0.1 -j DROP 创建/usr/games/目录,将crossfire1.9.0服务端解压到目录 #解压 touch /usr/games/ cd /usr/games/ tar zxpf crossfire.

C/C++代码静态分析工具调研

那年仲夏 提交于 2019-12-02 03:54:42
C/C++代码静态分析工具调研 摘自:https://www.jianshu.com/p/92886d979401 简述 静态分析(static analysis)是指在不执行代码的情况下对其进行分析评估的过程,是软件质量和软件安全保障的重要一环。它通过词法分析、语义分析、控制流分析、数据流分析等技术对代码逐行解析暴露问题,从而协助我们将许多在运行时才会暴露的棘手麻烦扼杀于摇篮之中。 典型问题示例 代码静态分析能够识别诸多类型的漏洞或缺陷,轻至警告级的「变量未使用」,重至错误级的各类bug,这里列举几种常见的、较严重的、可静态检测的问题。 ■ 缓冲区溢出 缓冲区溢出是指向缓冲区中存入超出其空间大小的数据量,导致多余的数据覆盖其他区域的合法数据,类似倒入容器中的水过多而导致溢出,流到它不该去的地方,造成不可预期的后果。从实践统计看,缓冲区溢出问题是软件中最普遍存在的漏洞问题,在C/C++这类不提供内存越界检测的语言中尤甚。通常,发生缓冲区溢出的情况有: 字符串拷贝,当目标缓冲区长度小于源字串的长度时(此类的函数包括 strcpy 、 _mbscpy 、 strcat 、 wcscat 、 memcpy 、 strncpy 、 _mbsncpy 、 strncat 、 wcsncat 等)。 // 字符串拷贝之前没有对s做长度判断,如果超过10,就会造成缓冲区溢出。 void func

2019-2020-1 20175330 《信息安全系统设计基础》第三周学习总结

北战南征 提交于 2019-12-01 07:18:41
# 2019-2020-1 20175330 《信息安全系统设计基础》第三周学习总结 目录 * 一、教材学习内容总结 * 二、教材学习中的问题和解决过程 * 三、心得体会 ### 一,教材学习内容总结 我将本周的东西做了一个脑图 其中的数据 操作数可分为三种类型: 1. 立即数 2. 寄存器 3. 内存引用 类型 缓冲区溢出 原理 通过往程序的 缓冲区 写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的 堆栈 ,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。造成 缓冲区 溢出的原因是程序中没有仔细检查用户输入的参数。 漏洞 缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得 root权限 的shell。为了达到这个目的,攻击者必须达到如下的两个目标: 1. 在程序的 地址空间 里安排适当的代码。 2. 通过适当的初始化 寄存器 和内存,让程序跳转到入侵者安排的 地址空间 执行。 可以根据这两个目标来对 缓冲区溢出攻击 进行分类。 ### 二,教材学习中的问题和解决过程 来源: https://www.cnblogs.com/waaaaa/p/11667861.html

第九章 缓冲区溢出

為{幸葍}努か 提交于 2019-11-29 19:23:11
程序漏洞从哪里来 • 罪恶的根源:变量 • 数据与代码边界不清 • 最简漏洞原理 —— shell脚本漏洞 缓冲区溢出 • 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑暴”,从而覆盖了相邻内存区域的数据; • 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 如何发现 漏洞 • 源码审计 • 逆向工程 • 模糊测试 • 向程序堆栈半随机的数据,根据内存变化判断溢出 • 数据生成器:生成随机、半随机数据 • 测试工具:识别溢出漏洞 WINDOWS 缓冲区溢出 FUZZER • SLMail 5.5.0 Mail Server • ImmunityDebugger_1_85_setup.exe • mona.py • http://pan.baidu.com/s/1o6kT6gM • SLMail 5.5.0 Mail Server • POP3 PASS 命令存在缓冲区溢出漏洞 • 无需身份验证实现远程代码执行 • DEP:阻止代码从数据页被执行 • ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化 POP3 • Nc 110端口 • 了解未知协议 • Wireshark • RFC FUZZING • 测试 PASS 命令接收到大量数据时是否会溢出 • EIP 寄存器存放下一条指令的地址 FUZZING •

本地缓冲区溢出分析

时光总嘲笑我的痴心妄想 提交于 2019-11-28 21:44:44
在黑客圈子中,基于内存攻击技术的攻击手段在随着时代的变化而不断发展着,内存攻击是指通过利用软件的安全漏洞,构造恶意的输入,从而使正常程序造成拒绝服务或者是远程获得控制权,内存攻击技术中最先登上历史舞台的就是缓冲区溢出漏洞,时至今日能够被广泛利用的 60% 以上的高危漏洞(CVE)都属于缓冲区溢出,而在各大CTF比赛中缓冲区溢出漏洞的重视程度始终居高不下,接下来我将总结缓冲区溢出的相关知识点并带领小白学会挖掘简单的漏洞。 缓冲区溢出: 缓冲区溢出(Buffer Overflow),分为栈溢出与堆溢出,此类漏洞的原理是,程序由于缺乏对缓冲区的边界进行合理化的检测而引起的一种异常行为,通常是程序存在过滤不严格的输入点,通过这些输入点攻击者可以向程序中写入超过了程序员预先定义好的缓冲边界,从而覆盖了相邻的内存区域,造成程序中的变量覆盖,甚至控制EIP指针,从而造成程序的非预期行为, 来源: https://www.cnblogs.com/LyShark/p/11427685.html

缓冲区溢出实例(二)--Linux

旧街凉风 提交于 2019-11-28 06:17:22
原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞。 工具: 调试工具:edb; ###python在漏洞溢出方面的渗透测试和漏洞攻击中,具有很大的优势 实验对象:crossfire【多人在线RPG游戏】 运行平台:Kali i386 虚拟机【32位,计算机CPU位数是指地址总线位数,64位系统的寻址空间为2^64,寻址过大,难以处理,为了简化操作,所以选用32位】 搭建实验环境 #linux中,游戏需安装带其game文件夹 服务器端程序 cp crossfire.tar.gz /usr/games/ tar -zxpf crossfire.tar.gz ./crossfire 运行 出现Waiting for connections即可,有问题看看Error 查看端口开放情况 可以看到crossfire进程已经开始监听本地13327端口 新版本Linux内核支持内存保护机制 DEP、ASLR、堆栈cookies、堆栈粉碎 今天实验内容使用的crossfire1.9程序相对来说比较简陋,不支持内存保护机制,对这个实验没有影响 本机调试【防止在渗透测试过程中的非法网络访问,以防被黑客入侵电脑】 iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP

缓冲区溢出实例(一)--Windows

不羁的心 提交于 2019-11-28 06:16:38
一、基本概念 缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获取服务器控制权限等。 在Windows XP或2k3 server中的SLMail 5.5.0 Mail Server程序的POP3 PASS命令存在缓冲区溢出漏洞,无需身份验证实现远程代码执行。 注意,Win7以上系统的防范机制可有效防止该缓冲区漏洞的利用: DEP:阻止代码从数据页被执行; ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化。 二、实验环境准备: SLMail 5.5.0 Mail Server ImmunityDebugger_1_85_setup.exe mona.py 下载地址: https://slmail.software.informer.com/download/ https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/Immunity-Debugger.shtml https://github.com/corelan/mona mona手册 https://www.corelan.be/index.php/2011/07/14/mona-py-the