(1)原理: 使用爆破技巧,来绕过共享库地址随机化.爆破:攻击者选择特定的 Libc 基址,并持续攻击程序直到成功.这个技巧是用于绕过 ASLR 的最简单的技巧. (2)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { char buf[256]; strcpy(buf,argv[1]); printf("%s\n",buf); fflu…
转:https://bbs.pediy.com/thread-217390.htm 前提条件: 经典的基于堆栈的缓冲区溢出 虚拟机安装:Ubuntu 12.04(x86) 在以前的帖子中,我们看到了攻击者需要知道下面两样事情 堆栈地址(跳转到shellcode) libc基地址(成功绕过NX bit) 为了利用漏洞代码. 为了阻止攻击者的行为,安全研究人员提出了一个称为“ASLR”的漏洞利用. 什么是 ASLR? 地址空间布局随机化(ASLR)是随机化的利用缓解技术: 堆栈地址 堆地址 共享库地…
(1)原理: “NX Bit”的漏洞缓解:使某些内存区域不可执行,并使可执行区域不可写.示例:使数据,堆栈和堆段不可执行,而代码段不可写. 在NX bit打开的情况下,基于堆栈的缓冲区溢出的经典方法将无法利用此漏洞.因为在经典的方法中,shellcode被复制到堆栈中,返回地址指向shellcode.但是现在由于堆栈不再可执行,我们的漏洞利用失败!但是这种缓解技术并不完全是万无一失的,使用叫做“return-to-libc”的攻击技术绕过NX bit.这里返回地址被一个特定的libc函数地址覆盖…
(1)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> #include <stdlib.h> void store_passwd_indb(char * passwd){ } void validate_uname(char * uname){ } void validate_passwd(char * passwd){ char passwd_buf [11]; unsigned char passwd_len…
off by one(栈)? 将源字符串复制到目标缓冲区可能会导致off by one 1.源字符串长度等于目标缓冲区长度. 当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方.这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行. 实例代码test1.c: #include<stdio.h> #include<stdlib.h> void foo(char *arg); v…
(1)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { /* [1] */ char buf[256]; /* [2] */ strcpy(buf,argv[1]); /* [3] */ printf("Input:%s\n",buf); return 0; } 编译 sudo sh -c "echo 0 > /proc/…
绕过ASLR - 第一部分 什么是 ASLR? 地址空间布局随机化(ASLR)是随机化的利用缓解技术: 堆栈地址 堆地址 共享库地址 一旦上述地址被随机化,特别是当共享库地址被随机化时,我们采取的绕过NX bit的方法不会生效,因为攻击者需要知道libc基地址.但这种缓解技术并不完全是万无一失的,因此在这篇文章中我们可以看到如何绕过共享库地址随机化! 原文地址:https://bbs.pediy.com/thread-217107.htm 也许已经有人发现了,这个系列没有系列五……其实是五太麻烦…
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-7/ 今天我们将完成我们第一个完整的游戏--打砖块.这次教程中,将展示怎样进行基本的碰撞检测和使用HTML5的本地存储.你可以使用鼠标和键盘来操作挡板,上一次游戏的持续时间和分数将会保存. 前一篇的的介绍在HTML5游戏开发系列教程6(译). 第一步:HTML <!DOCTYPE html> <html lang="en"> &l…
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-6/ 这是我们最新一篇HTML5游戏开发系列文章.我们将继续使用canvas来进行HTML5游戏开发系列的文章.这次是个完整的游戏例子,再现一款经典的电脑游戏--坦克大战.我将教你们使用交替的数组地图(alternative array-maps),同时将说明如何检测活动对象(坦克)和周围环境之间的碰撞. 前一篇的的介绍在HTML5游戏开发系列教程5(译). 第一…
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-5/ 最终我决定准备下一篇游戏开发系列的文章,我们将继续使用canvas来进行HTML5游戏开发系列的文章.今天我准备音乐的例子(有点儿像音乐合成器),它用到了使用CSS3来制作的基于DOM的对话框.为什么我使用独立的对话框--简单,最主要是因为CSS有很多处理标准元素的文本和样式的方法,且它可以使JS的代码简单,同时能提升例子程序的速度.所以你可以对这些对话框应…