科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server应用程序高级SQL注入(上)(1)

SQL Server应用程序高级SQL注入(上)(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。典型的执行语句是query,它能够收集比较有达标性的记录并返回一个单一的结果集。

作者:gaoyuanan 来源:赛迪网技术社区 2007年9月7日

关键字: 注入 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件

SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。典型的执行语句是query,它能够收集比较有达标性的记录并返回一个单一的结果集。SQL语言可以修改数据库结构(数据定义语言)和操作数据库内容(数据操作语言)。在这份文档中,我们将特别讨论SQLSERVER所使用的Transact-SQL语言。

当一个攻击者能够通过往query中插入一系列的sql语句来操作数据写入到应用程序中去,我们管这种方法定义成SQL注入。

一个典型的SQL语句如下:

Select id,forename,surname from authors

这条语句将返回authors表中所有行的id,forename和surname列。这个结果可以被限制,例如:

Select id,forename,surname from authors where forename'john' and surname='smith'

需要着重指明的是字符串'john'和'smith'被单引号限制。明确的说,forename和surname字段是被用户提供的输入限制的,攻击者可以通过输入值来往这个查询中注入一些SQL语句,

如下:

Forename:jo'hn 
Surname:smith

查询语句变为:

Select id,forename,surname from authors where forename='jo'hn' and surname='smith'

当数据库试图去执行这个查询时,它将返回如下错误:

Server:Msg 170, Level 15, State 1, Line 1 
Line 1:Incorrect syntax near 'hn'

造成这种结果的原因是插入了.作为定界符的单引号。数据库尝试去执行'hn',但是失败。如果攻击者提供特别的输入如:

Forename:jo';drop table authors— 
Surname:
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章