[译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出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…
modules with dependencies   webpack   module bundler   static  assetss   .js .js .png Webpack傻瓜式指南 npm install -g webpack 定义   MODULE BUNDLER 把有依赖关系的各种文件打包成一 系列的静态资源 简单来说就是一个配置文件, 在这一个文件中产生的. 三大块 entry 入口文件   让webpack 用哪个文件作为项目的入口 output 出口 让webpack…
add by zhj: 作者写了三篇文章,这是第一篇幅,另外两篇参见 https://zhuanlan.zhihu.com/p/20397902 https://zhuanlan.zhihu.com/p/20522487 原文:https://zhuanlan.zhihu.com/p/20367175 Webpack傻瓜式指南(一) Webpack最近很热,我一开始是想翻译一篇国外关于webpack的佳作,但是找来找去也没有一篇让我感觉到很满意的,好多都是一步到位,满屏幕都是React+Webp…
一.实验目的 熟悉编写shellCode的流程 掌握缓冲区溢出的利用 二.实验环境 系统环境:Windows环境 软件环境:C++ ,缓冲区溢出文件链接 三.实验原理 要实施一次有效的缓冲区溢出攻击,攻击者必须完成如下任务: (1)在程序的地址空间里植入适当的代码(称为shellcode)用于完成获取系统控制权等非法任务. (2)通过修改寄存器或内存,让程序执行流跳转到攻击者植入的shellcode地址空间执行. 在具体实现时,我们通过三个步骤完成缓冲区溢出: (1).精确查找返回地址的位置 (…
前言 ShellCode究竟是什么呢,其实它就是一些编译好的机器码,将这些机器码作为数据输入,然后通过我们之前所讲的方式来执行ShellCode,这就是缓冲区溢出利用的基本原理.那么下面我们就来编写ShellCode.为了简单起见,这里我只想让程序显示一个对话框: 图1 获取相关函数的地址 那么我们下面的工作就是让存在着缓冲区溢出漏洞的程序显示这么一个对话框.由于我在这里想要调用MessageBox()这个API函数,所以说首先需要获取该函数的地址,这可以通过编写一个小程序来获取: #inclu…
实验机器: Kali虚拟机一台(192.168.163.133) Windows XP虚拟机一台(192.168.163.130) 如何用Kali虚拟机一步一步“黑掉”这个windowsXP虚拟机呢? 用到的软件: SLmail程序(存在缓冲区溢出漏洞) ImmunityDebugger(调试工具) mona脚本(配合调试工具使用) 这些在准备工作的文章中有百度网盘下载地址 实验目的: 用Kali虚拟机发送脚本,完成对SLmail程序的缓冲区溢出漏洞的利用 从而获取目标windows机器的最高权…
这是别人给我发的,让我分析一下,看能否写出exp.只怪自己水平不够,最后没能写出exp,以下为自己的分析思路 环境为win10 pro x64 英文版(10.0.16299) 默认安全配置 一.漏洞分析 此漏洞是由于LeviStudioU在处理.G_Picture.xml文件的szFilename时没有对其长度进行检查,导致调用后续的函数MSVCR90!wcscpy时发生缓冲区溢出,从而引发SEH异常. 首先打开LeviStudioU,附加windbg,到达漏洞现场 此时引用了无效指针,再次执行…
想要进行缓冲区溢出的分析与利用,当然就要懂得程序运行的机制.今天我们就用动态分析神器ollydbg来了解一下在windows下程序是如何运行的. 戳这里看之前发布的文章: 缓冲区溢出实战教程系列(一):第一个缓冲区溢出小程序:https://www.freebuf.com/articles/system/195614.html 缓冲区溢出实战教程系列(二):dev c++编译汇编代码:https://www.freebuf.com/articles/system/197116.html 0×00…
0x01 介绍 Exploit 的英文意思就是利用,它在黑客眼里就是漏洞利用.有漏洞不一定就有Exploit(利用),有Exploit就肯定有漏洞.编写缓冲区溢出的Exploit分为3个方面:漏洞溢出长度+返回地址利用+shellcode 测试环境:C-free5 + Windows10 + 2019年1月25日 0x02 测试漏洞溢出长度 1.测试漏洞溢出长度意思是看看可利用的漏洞需要多少字节溢出到返回地址,下面是示例程序 2.这个程序储存test[5]这个字符串变量的栈地址是这样的 3.所以…
首先简要回顾一下缓冲区溢出的攻击大系: ◆栈溢出(stack smashing) 未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序的执行流程指向我们的shellcode. ◆堆溢出(malloc/free heap corruption) 一种是和传统的栈溢出一样,当输入超出malloc()预先分配的空间大小,就会覆盖掉这段空间…
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患. 历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Morris Worm所携带的攻击代码了.这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏洞,给…
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的…
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测试和漏洞攻击中,具有很大的优势 实验对象:crossfire[多人在线RPG游戏] 运行平台:Kali i686 虚拟机[32位,计算机CPU位数是指地址总线位数,64位系统的寻址空间为2^64,寻址过大,难以处理,为了简化本章操作,所以选用32位] 搭建实验环境 #linux中,游戏需安装带其ga…
缓冲区溢出实例 缓冲区溢出原理:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html 空间存储了用户程序的函数栈帧(包括参数.局部数据等),实现函数调用机制,它的数据增长方向是低地址方向.堆空间存储了程序运行时动态申请的内存数据等,数据增长方向是高地址方向.除了代码段和受操作系统保护的数据区域,其他的内存区域都可能作为缓冲区,因此缓冲区溢出的位置可能在数据段,也可能在堆.栈段.如果程序的代码有软件漏洞,恶意程序…
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系…
2018-2019-2 20165225<网络对抗技术>Exp1 缓冲区溢出实验 声明 虽然老师在邮箱中要求要把虚拟机名改为个人名字缩写,但是我的kali好像不是很听话...重启数次也没用,在此声明bakugou就是我(是的我就是咔酱!) 实验部分 实验点1:逆向及Bof基础实践 实验开始前,老师给了我们一个pwn1文件,先让我们来看看它是做什么的: 和实验指导中说的一样,pwm1正常执行可简单回显任何用户输入的字符串. 在这里我们首先养成一个好习惯,将原代码其复制一下,并将新文件命名为201…
之前做过一个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…
在前几篇的博客中:我介绍了OpenVAS和Nessus这两个强大的自动化漏洞扫描器 但是,在计算机领域中有种叫做0day漏洞:没有公开只掌握在某些人手中 那么,这些0day漏洞是如何被发现的呢? 接下来就介绍下这一类漏洞中最典型的一种:缓冲区溢出 通过缓冲区溢出,甚至可以控制目标机器 什么是缓冲区:内存中一个片段 使用程序,就会调用参数和变量,程序会提交数据给计算机,先放入内存, 再交由CPU运算处理,然后可能会写入计算机硬盘进行保存. 程序不像是图片文字不变的,它会根据用户的操作而有不同的反应…
缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 CrossFire 多人在线RPG游戏 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞 (服务端) 调试工具 edb 运行平台 kali 2.0 x64虚拟机 Linux中内存保护机制 DEP ASLR 堆栈 cookies 堆栈粉碎 漏洞太…
缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 POP3   PASS 命令存在缓冲区溢出漏洞   无需身份验证实现远程代码执行 软件 slmail          http://slmail.software.informer.com/5.5/ mona.py      https://github.com/corelan/mona i…
kali渗透测试之缓冲区溢出实例-windows,POP3,SLmail 相关链接:https://www.bbsmax.com/A/xl569l20Jr/ http://4hou.win/wordpress/?p=7255 缓冲区溢出实例 缓冲区溢出原理:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html 空间存储了用户程序的函数栈帧(包括参数.局部数据等),实现函数调用机制,它的数据增长方向是低地址方向.…
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测试和漏洞攻击中,具有很大的优势 实验对象:crossfire[多人在线RPG游戏] 运行平台:Kali i686 虚拟机[32位,计算机CPU位数是指地址总线位数,64位系统的寻址空间为2^64,寻址过大,难以处理,为了简化本章操作,所以选用32位] 搭建实验环境 #linux中,游戏需安装带其ga…
先来看看基于 Red Hat 与 Fedora 衍生版(例如 CentOS)系统用于阻止栈溢出攻击的内核参数,主要包含两项: kernel.exec-shield 可执行栈保护,字面含义比较“绕”, 实际上就是用来控制能否执行存储在栈 中的代码,其值为1时表示禁止:为0时表示允许:默认为1,表示禁止执行栈 中的代码,如此一来,即便覆盖了函数的返回地址导致栈溢出,也无法执行 shellcode 查看与修改系统当前的可执行栈保护参数: [root@localhost 桌面]# sysctl -a |…
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈 帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将 函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患. 历史上最著名的缓冲区溢出攻击可能要算是 1988年11月2日的Morris Worm所携带的攻击代码了.这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏…
本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. 0×01 前言 1988年,世界上第一个缓冲区溢出攻击–Morris蠕虫在互联网上泛滥,短短一夜的时间全世界6000多台网络服务器瘫痪或半瘫痪,不计其数的数据和资料被毁.造成一场损失近亿美元的空前大劫难! 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运…
3.ROP ROP 即 Return Oritented Programming ,其主要思想是在栈缓冲区溢出的基础上,通过程序和库函数中已有的小片段(gadgets)构造一组串联的指令序列,形成攻击所需要的 shellcode 来实现攻击效果.这种方式不需要注入新的指令到漏洞程序就可以改变某些寄存器或者变量的值,从而改变程序的执行流程. 攻击者可以通过工具对目标程序搜索,寻找所需要的指令序列.通常选取的指令序列以 ret 指令结尾,这样每一个单独的指令序列结束时,都会执行 ret 指令,即会将…
最近结合软件安全课程上学习的理论知识和网络资料,对缓冲区溢出漏洞的简单原理和利用技巧进行了一定的了解.这里主要记录笔者通过简单的示例程序实现缓冲区溢出漏洞利用的步骤,按由简至繁的顺序,依次描述简单的 shellcode.ret2libc.ROP.Hijack GOT 等缓冲区溢出攻击技术的原理和步骤,以供总结和分享.为了保证缓冲区溢出实践能够顺利进行,需要对编译器选项和操作系统环境进行设置,可参见笔者博客使用Linux进行缓冲区溢出实验的配置记录.同时,针对使用 gdb 动态调试获得的程序局部变…
漏洞简述   Microsoft Excel是Microsoft Office组件之一,是流行的电子表格处理软件.        Microsoft Excel中存在缓冲区溢出漏洞,远程攻击者可利用此漏洞以当前用户权限执行任意代码,造成拒绝服务.Microsoft Office Excel处理特制Excel文件的方式中存在一个远程代码执行漏洞.成功利用此漏洞的攻击者便可完全控制受影响的系统.攻击者可随后安装程序:查看.更 改或删除数据:或者创建拥有完全用户权限的新帐户. 同样是用泉哥的poc去调…
漏洞的罪恶根源------变量,数据与代码边界不清,开发人员对用户输入没做过滤,或者过滤不严 如这个脚本,写什么,显示什么,但是加上:,|,&&,后面加上系统命令,就执行命令了 缓冲区溢出: 当边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被撑爆,从而覆盖了相邻内存区域的数据,成功修改i内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 如何发现漏洞? 源码审计(代码审计),逆向工程(动态调试),模糊测试------(向程序堆栈半随机的数据,根据内存变化判断溢…