软考数据库资料:浅谈数据库的攻击

软考数据库资料:浅谈数据库的攻击,第1张

软考数据库资料:浅谈数据库的攻击,第2张

1。突破script的限制。
  例如,某网页上有一文本框,允许你输入用户名称,但是它限制你只能输入4个字符。许多程序都是在客户端限制,然后用msgbox弹出错误提示。如果你攻击时需要突破此限制,只需要在本地做一个一样的主页,只是取消了限制,通常是去掉VBscript或IavaScript的限制程序,就可以成功突破。

  如果是javascript做的,干脆临时把浏览器的脚本支持关掉。如果是
有经验的程序员常常在程序后台再做一遍检验,如果有错误就用response.write或类似的语句输出错误。
  2。对SQL的突破
  例如某网页需要你输入用户名称和口令,这样就有两个文本框等待你的输入,现在我们假设有一用户adam,我们不知道他的口令,却想以他的身份登陆。
  正常情况下,我们在第一个文本框输入adam,第二个文本框输入1234之类的密码,如果密码正确就可以进入,否则报错。
  程序中的查询语句可能是:
  sql="select * from user where username=’"&text1.value&"’ and passwd= ’"&text2.value&"’"
  执行时候就是
  select * from user where username=’adam’ and passwd=’1234’
  好了,
  如果我们在text2里输入的不是1234,而是1234’"&"’or 1=1
  我们的sql语句就成了,
  select * from user where username=’adam’ and passwd=’1234’ or 1=1
  我们就可以进入了。。。
  有经验的用户就在程序中增加对单引号等特殊字符的过滤。
  但是,一般人习惯上有两种登录认证方式我就用ASP的VBScript做例子了:
  一是用select * from ... where username = ’ & Request.Form("username") & "password = " & Request.Form("password"),然后判断结果是否为空来验证。其实还有一种方式:
  用select * from ... where username = ’ & Request.Form("username"), 然后判断结果集中的密码是否和输入相同来验证,这种方式就安全一些了。
  3。利用多语句执行漏洞。
  根据上面的思路,如果用户根据书名(例如linux入门)查询所有的书,SQL语句为
  select book.name,book.content from book where bookname=’linux入门’
  如果我们输入的不是linux入门而是 linux入门’ delete from user where ’1’ = ’1
  从而构成对表的删除。
  成功的前提条件是对方允许多条语句的执行。
  由于程序没有处理边界符“’”产生的漏洞的危害程度和结果集的类型及数据库的配置有很大的关系。首先说结果集,如果结果集只支持单条的SQL语句,那么你所能做的只是上面提到的那种在密码框内输入’ or ’1’ = ’1来登录,其他的做不了。
  我们还可以用这种方法在数据库里增加用户。
  4。SQL Server装完后自动创建一个管理用户sa,密码为空。而好多人装完后并不去改密码,这样就留下了一个极大的安全问题,我稍后再细说。
  程序中的连接一般用两种,不是用global.asa就是用SSL文件。SSL文件一般人习惯放到到Web的/include或/inc目录下。而且文件名常会是conn.inc、db_conn.inc、dbconninc,等等,反正有时能猜到。
  如果这个目录没有禁读,一旦猜到文件名就可以了,因为.inc一般不会去做关联的,直接请求不是下载就是显示源文件。
  还有当主要程序放到一个后缀为.inc的文件而没有处理“’”,当运行出错时返回的出错信息中常会暴露.inc文件,我遇到过几次这样的情况。其实可以在IIS里设置来不回应脚本出错信息的。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 软考数据库资料:浅谈数据库的攻击

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情