当前位置: 网学 > 编程文档 > SQL SERVER > 正文

数据库系统安全之漏洞发掘

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式
和返回地址。当用AAAA覆盖返回地址,函数退栈时系统就将0x41414141(A的16进制ASCII码)赋给EIP去执行,由于是一个非法的内存地址,故程序崩溃。但如果用一个实际存在的地址覆盖返回地址,那么程序就转而去执行该地址处的指令,通常黑客会在这个地址植入所谓的shellcode,由shellcode产生一个shell,如果被攻击程序设置了suid位,那么产生的shell就是root shell,黑客也就获得了系统的最高控制权,这一过程就是基本的缓冲区溢出攻击。

  覆盖函数的返回地址是比较常见的攻击方式,但缓冲区溢出攻击的手法是灵活多样的,往往在编程中的一个小小纰漏就可能导致被攻击,下面简单介绍一下几种较为高级的攻击方式。

  (1)通过覆盖函数指针进行攻击:

以下是引用片段:
  /* vulprog */
  int main(int argc , char * argv)
  {
  void (* fp)(char *) = (void (*)(char *))&puts;
  char buff[256];
  strcpy(buff,argc);
  fp(argc);
  exit(1);
  }

  上面这个程序在执行拷贝时没有检查边界,这样用户数据就有可能覆盖函数指针fp,如果用shllcode的地址去覆盖fp,那么函数指针调用时就会去执行shellcode。

  这种覆盖函数指针的方式是一种较直接的覆盖方式(因为函数指针就在缓冲区上面),还有一种间接的覆盖方式,就是当函数指针不直接在缓冲区上面时,通过覆盖另外一个指针来覆盖函数指针,再将shellcode的地址填充函数指针。

  (2)通过覆盖 .dtors区地址进行攻击:

以下是引用片段:
  /* vulprog */
  int main(int argc ,char * argv)
  {
  char * pbuf = malloc(strlen(argv)+1);
  char buff[256];
  strcpy(buff,argv);
  strcpy(pbuf,argv);
  exit(1);
  }

  虽然这个程序没有函数指针,但在执行第二个拷贝时,可以将任意的数据拷贝到任意的地址中(这个地址由第一个拷贝指定),这时就可以选择用 .dtors区的地址覆盖指针pbuf,在执行第二个拷贝时将shellcode的地址拷贝至.dtors区,那么在函数退出时shellcode就会被执行。

  其实针对这个程序,攻击者不仅可以覆盖.dtors区的地址,还可以覆盖GOT(全局偏移表)中exit的地址,或__deregister_frame_info的地址。

  从上面的这些例子可以看出,如果编程中不注意缓冲区边界的检查,就很可能导致被溢出攻击。

  由于缓冲区溢出攻击的频繁爆发,迫使很多操作系统厂商推出了不可执行堆栈、更新C库函数等措施。这些措施一定程度上遏制了普通的缓冲区溢出,但道高一尺,魔高一丈,黑客们很快就将注意力转移到新的溢出攻击上,如堆溢出。从最初的溢出重要变量(如函数指针、文件指针)到dlmalloc中malloc-free类型的堆溢出到ptmalloc中的堆溢出,层出不穷。其实不管这些手法有多高明,最终的根源只有一个:利用程序中未对缓冲区边界进行有效检查。

  2.SQL注入

  数据库系统除了可能受到缓冲区溢出的攻击外,近几年又出现了SQL注入的攻击方式,这种攻击方式被称为 “ SYSDBA的恶梦”。SQL注入可能导致数据库系统中的普通用户窃取机密数据(如获得SYSDBA密码)、进行权限提升(如获得SYSDBA特权)等,而这种攻击方式又不需要太多计算机方面的知识,一般只要能熟练使用SQL语言即可,因此对数据库的安全构成了很大的威胁。

  SQL注入的攻击方式比较简单,一般是将一些特权语句注入到有漏洞的存储过程或触发器中导致这些语句被非法执行。例如在Oracle中由SYS创建如下存储过程并将执行权限授予普通用户:

以下是引用片段:
  CREATE OR REPLACE PROCEDURE PROC1 ( INPUT VARCHAR2) AS
   
  STMT:=''SELECT TITLES FROM BOOKS WHERE AUTHOR ='''''' || INPUT || '''''''';
  EXECUTE IMMEDIATE STMT;
   

 

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号