SEED缓冲区溢出实验笔记】的更多相关文章

缓冲区溢出实验(Linux 32位) 参考教程与材料:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/ (本文记录了做SEED缓冲区溢出实验的体会与问题,侧重实践,而不是讲解缓冲区溢出原理的详细教程) 1. 准备工作 使用SEED ubuntu虚拟机进行缓冲区溢出实验,首先要关闭一些针对此攻击的防御机制来简化实验. (1)内存地址随机化(Address Space Randomization):基于Lin…
参考:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Return_to_libc/    http://drops.wooyun.org/tips/6597    Bypassing non-executable-stack during exploitation using return-to-libc by c0ntex | c0ntex[at]gmail.com    ROP轻松谈    <程序员的自我修养>(虽然我没看完,但…
seed缓冲区溢出实验 有漏洞的程序: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */ #include <stdlib.h> #include <stdio.h> #include <string.h> int bof(char *str) { char buffer[12]; /*…
之前做过一个Windows应用SLmail的缓冲区溢出的实验 这次来做一个Linux平台的缓冲区溢出实验: 缓冲区溢出是什么? 学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 这次用到的是一款小游戏:(不是传统意义上的穿越火线) CrossFire(不是TX的某网游,只是恰好同名) 多人在线RPG游戏 1.9.0 版本接受入站 socket…
上一篇文章,我已经做好了缓冲区溢出实验的准备工作: https://www.cnblogs.com/xuyiqing/p/9835561.html 下面就是Kali虚拟机对缓冲区溢出的测试: 已经知道目标IP为:192.168.163.130 连接目标机器110端口成功,接下来进行测试 事先已经知道PASS命令存在缓冲区溢出漏洞: 只要在PASS后边输入的数据达到某一个值时,就会出现缓冲区溢出漏洞 但是,手动尝试这个值实在有点低端,写一个Python脚本: 先写一个基本的脚本来测试: #!/us…
2018-2019-2 20165232<网络对抗技术>Exp1 缓冲区溢出实验 实验点1:逆向及Bof基础实践 实践任务 用一个pwn1文件. 该程序正常执行流程是:main调用foo函数,foo函数会回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不被运行的.实践的目标就是想办法运行这个代码片段.我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode. 三个实践内容: 手工修改可执行文件,改变…
2018-2019-2 20165225<网络对抗技术>Exp1 缓冲区溢出实验 声明 虽然老师在邮箱中要求要把虚拟机名改为个人名字缩写,但是我的kali好像不是很听话...重启数次也没用,在此声明bakugou就是我(是的我就是咔酱!) 实验部分 实验点1:逆向及Bof基础实践 实验开始前,老师给了我们一个pwn1文件,先让我们来看看它是做什么的: 和实验指导中说的一样,pwm1正常执行可简单回显任何用户输入的字符串. 在这里我们首先养成一个好习惯,将原代码其复制一下,并将新文件命名为201…
在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等目的.但随着操作系统和编译器针对缓冲区溢出问题引入防护机制,初学者想要由简入繁的学习和实践缓冲区溢出的原理变得困难.在 Linux 环境下,用户可以通过设置编译和系统环境来去除某些防护措施,从而方便的完成某些简单的缓冲区溢出实验. 1.关闭SSP( Stack Smashing Protector…
缓冲区溢出实验 1.什么是缓冲区溢出 ​ 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 2.实验准备 系统用户名 shiyanlou 实验楼提供的是 64 位 Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在 32 位环境下作操作,因此实验之前需要做一些准备. 输入命令安装一些用于编译 32 位 C 程序的软件…
在前几篇的博客中:我介绍了OpenVAS和Nessus这两个强大的自动化漏洞扫描器 但是,在计算机领域中有种叫做0day漏洞:没有公开只掌握在某些人手中 那么,这些0day漏洞是如何被发现的呢? 接下来就介绍下这一类漏洞中最典型的一种:缓冲区溢出 通过缓冲区溢出,甚至可以控制目标机器 什么是缓冲区:内存中一个片段 使用程序,就会调用参数和变量,程序会提交数据给计算机,先放入内存, 再交由CPU运算处理,然后可能会写入计算机硬盘进行保存. 程序不像是图片文字不变的,它会根据用户的操作而有不同的反应…
实验代码 https://github.com/TouwaErioH/security/tree/master/stack%20overflow 实验目的 Buffer over flow 漏洞利用实践 实验内容 编写exploits攻击漏洞程序 实验结果 获取具有root权限的shell 实验环境 Windows10 Oracle VM VirtualBox Ubuntu16.04 i386 Sudo apt-get prelink Exploits 攻击程序.Vulnerables 目标程序…
实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul5 Snprintf函数,百度百科: 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中. (1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0'): (2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('…
实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul2 下面只给出有漏洞部分的代码.Vul2问题为sizeof函数在计算时会考虑最后的/0占一字节而strlen不会,同时for循环中用的是i<=,导致虽然nstrcpy函数做了len和out1的比较,但是从argv拷贝到buf数组时,最多可以拷贝201字节,多拷贝的1字节覆盖掉foo函数ebp的最低字节.利用这一点可以实现溢出攻击. shellcode(构造过程) 原理是运行…
实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul6 Vul6和vul2类似,可以覆盖foo的ebp的一字节.而这里有一个exit(0),需要绕过.绕过思路见3.6exploit6   shellcode(构造过程) 原理是运行/bin/sh 来得到shell,构造过程是将具有运行/bin/sh的C代码转换成有相同功能的机器码.注意代码中用到  0  的地方改成用 xor  eax,eax,这样可以避免复制字符串时遇到/0…
实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul4 观察foo函数,可见问题在于最后一次tfree(q).由于之前已经tfree了q,现在相当于tfree一个不存在的空间,导致出错. 再看自定义的函数 CHUNK结构体占8个字节(前4个字节为左指针,后4个字节为右指针,分别指向前后的块位置) 在块的r指针的低位部分存储块的状态,1为空闲,0为占用 SET_FREEBIT()函数为将块设置为空闲块 CLR_FREEBIT(…
mysql链接字符串函数 concat(str1,str2) concat_ws(separator,str1,str2....) group_concat(str1,str2....) mysql的concat函数可以连接一个或者多个字符串 concat(username,0x23,password,0x23.....) concat_ws()函数,表示concat with separator,即有分隔符的字符串连接 group_concat()函数,把每一行数据分到一个组里显示出来 htt…
实践涉及指令 NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令,如果不相等则跳转.(机器码:75) JE:条件转移指令,如果相等则跳转.(机器码:74) JMP:无条件转移指令.段内直接短转Jmp CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果…
实验机器: Kali虚拟机一台(192.168.163.133) Windows XP虚拟机一台(192.168.163.130) 如何用Kali虚拟机一步一步“黑掉”这个windowsXP虚拟机呢? 用到的软件: SLmail程序(存在缓冲区溢出漏洞) ImmunityDebugger(调试工具) mona脚本(配合调试工具使用) 这些在准备工作的文章中有百度网盘下载地址 实验目的: 用Kali虚拟机发送脚本,完成对SLmail程序的缓冲区溢出漏洞的利用 从而获取目标windows机器的最高权…
缓冲区溢出实验: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 首先对于实验楼先进行一定的预处理 /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */…
缓冲区溢出漏洞实验报告 实验楼中有seed缓冲区溢出漏洞实验,实验内容与课本中要求的实验基本一致,便利用实验楼提供好的现成实验环境来完成这次的实践内容. 一.实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 系统用户名shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语…
最近结合软件安全课程上学习的理论知识和网络资料,对缓冲区溢出漏洞的简单原理和利用技巧进行了一定的了解.这里主要记录笔者通过简单的示例程序实现缓冲区溢出漏洞利用的步骤,按由简至繁的顺序,依次描述简单的 shellcode.ret2libc.ROP.Hijack GOT 等缓冲区溢出攻击技术的原理和步骤,以供总结和分享.为了保证缓冲区溢出实践能够顺利进行,需要对编译器选项和操作系统环境进行设置,可参见笔者博客使用Linux进行缓冲区溢出实验的配置记录.同时,针对使用 gdb 动态调试获得的程序局部变…
缓冲区溢出漏洞实验 本课程详细出自http://www.shiyanlou.com/courses/231,转载请注明出处. 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的…
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的…
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系…
一.实验简介: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写.…
x86-64 Linux 内存结构 先来看看一个程序在内存中是如何组织的.Linux 为每个进程维持了一段单独的虚拟地址空间.(进程是计算机科学中很深刻.很成功的一个概念.当我们在运行一个程序时,会得到一个假象,好像我们的程序是系统当中运行的唯一程序,独占存储器和处理器资源.) 最上面是栈(stack),一般用来保存局部变量,有 8 MB 的大小限制,因此不建议在函数内开大数组,递归的效率低是因为容易栈溢出.栈的增长方向是向下的. 堆(heap),动态分配的内存会在这里处理,例如 malloc.…
一.几个关于指针的小知识点: 1.  malloc是在堆上动态分配内存,返回的是void *,使用时会配合显式/隐式类型转换,用完后需要用free手动释放. alloca是标准库函数,可以在栈上分配任意字节数量的内存,用完自动释放. 2.指针的优先级较低: char (*p)[3],括号中优先级最高,所以p是一个指针,指向一个3个元素的char数组. char *p[3],  因为指针优先级较低,所以*与char结合,p代表一个3个元素的数组,每个元素都是一个char *. 3.函数指针: 它的…
0x00 背景 Httpd服务中的缓冲区溢出漏洞 复现参考文章https://www.4hou.com/posts/gQG9 Binwalk -Me 解压缩 File ./bin/busybox文件类型 MIPS 32位,小端 0x01 固件仿真环境搭建 在TPlink官网上直接找到了TP-Link TL-WR841N v14 2018-3月的固件版本,是漏洞修复前的,下载后想着既然没有实物,何不仿真运行呢? 在网上寻找资料过程中,在这篇文章[物联网设备固件模拟入门 ]中找到了相应工具,固件分析…
最近看逍遥的<网络渗透攻击与安防修炼>讲到CMD命令窗口的dir传超长字符串溢出的例子.自己实验了一下,的确会产生程序崩溃,但是具体什么原理没太详细说,这里做一下原理探究,权当学习笔记了. 1. 实验环境 XP SP3 我发现在XP下的cmd.exe有这个漏洞,而在win7下之后的cmd.exe就没有这个漏洞了 我的理解是这个cmd.exe程序本来就是windows的一个80x86的实模式模拟环境,在win下又进行了重写,加固了程序.所以我接下来的实验材料取自XP下的cmd.exe 2. 漏洞…
[译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash the stack:--介绍&背景2.Welcome to the jungle, we've got fun and wargames:--介绍我们之后要使用的示例&分析它的源代码3. There is no spoon. This causes problems when you try…