当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

数据库中安全知识介绍-入门底子[Oracle防范]

赞助商链接



  本文“数据库中安全知识介绍-入门底子[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  数据库系统是在操作系统平台之上的最重要的系统软件,数据库系统的安全可以说是非常重要的.曾经有句话这样说:假如网络各处是金钱,那么金钱就在数据库服务器中.随着无纸化业务环境的不断扩大,人们在数据库中存储着越来越多的敏感信息:银行账户、医疗记录、政府文件、军事奥秘等等,数据库系统就成为越来越有代价的攻击目标,因此确保数据库系统的安全也越来越重要.

  作为一种大型的系统软件,数据库系统中也存在着各种各样的安全漏洞,此中危害性较大的有缓冲区溢出、堆溢出和SQL注入等.

  1.缓冲区溢出

  缓冲区溢出是一种很常见也很陈腐的安全漏洞.早在上个世纪80年代,缓冲区溢出就已经为人所知,但时至本日,大量的缓冲区溢出漏洞仍被发现.最闻名的Morris蠕虫就是操纵Unix系统上fingerd程序的缓冲区溢出漏洞.在Oracle 9i公布之初,Oarcle公司曾声称他的数据库是" unbreakable "的,但不到几个月的时间,就暴出Oracle 9i中oracle.exe、XDB等程序存在多个缓冲区溢出漏洞.

  在C语言中最常见的缓冲区就是字符数组,而操作字符数组的函数有gets、strcpy、sprintf等.这些函数在履行字符串拷贝的历程中没有对字符串举行长度查抄,这样就很简单发生超长的字符串溢出缓冲区的情形.当初这样计划是出于效率的考虑,但目前看来,这些函数的利用已成为C语言软件脆弱的一个重要因素.假如程序员没有杰出的编程习惯,时刻注意函数调用历程中能否拷贝了超越缓冲区长度的字符串,那么缓冲区溢出就不可避免.关于一个有缓冲区溢出漏洞的程序,当普通用户输入超长字符串时,普通只会使该程序崩溃.比方关于下面一小段代码:

  以下是引用片段:

  

      /* vulprog */

  #include

  int main(int argc , char * argv[])

  {

  char buff[8];

  strcpy(buff, argv[1]);

  }

  假如用户履行 ./vulprog AAAAAAAAAAAAAAAA,在Linux上会呈现段错误,因为用户输入了超长的字符串,除了填满了缓冲区,还覆盖了其他一些程序正常退出所需求的数据.为了研究这个问题,就需求理解Linux系统中进程的内存空间.

  举行函数调用时系统所作的"序幕"工作就是将函数的返回地址和EBP压栈,再将ESP赋给EBP使其成为部分基指针,最后ESP减去一定的值为部分变量留出空间.这样当程序将太长的字符串拷贝到缓冲区时就会顺次覆盖EBP和返回地址.当用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[1]);

  fp(argc[2]);

  exit(1);

  }

  上面这个程序在履行拷贝时没有查抄边界,这样用户数据就有大概覆盖函数指针fp,假如用shllcode的地址去覆盖fp,那么函数指针调用时就会去履行shellcode.


  以上是“数据库中安全知识介绍-入门底子[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQLServer顶用T—SQL号令查询一个数据库中有哪些表的sql语句
  • 设置SQLServer数据库中某些表为只读的多种办法分享
  • sql语句查询数据库中的表名/列名/主键/自动增长值实例
  • 从VS 2010自带的2008 SQL数据库中的数据导入到SQL 2005中
  • 数据库中数据列转行并均分显示
  • Oracle数据库中主要配置文件的经典解析
  • Oracle 9i数据库中动态重配置深化解析
  • VB与Oracle数据库中的日期转换
  • 在MySQL数据库中利用C履行SQL语句
  • 在MySQL数据库中履行SQL语句时的几个注意点
  • 若何将数据库中被锁表解锁
  • 删除数据库中反复数据的几个办法
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .