- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Sql server应用程序中的高级SQL注入--.doc
Sql server应用程序中的高级SQL注入
介绍: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 e#39;john#39; and surname=#39;smith#39;
需要着重指明的是字符串#39;john#39;和#39;smith#39;被单引号限制。明确的说,forename和surname字段是被用户提供的输入限制的,攻击者可以通过输入值来往这个查询中注入一些SQL语句,
如下:
Forename:jo#39;hn
Surname:smith
查询语句变为:
Select id,forename,surname from authors e=#39;jo#39;hn#39; and surname=#39;smith#39;
当数据库试图去执行这个查询时,它将返回如下错误:
Server:Msg 170, Level 15, State 1, Line 1
Line 1:Incorrect syntax near #39;hn#39;
造成这种结果的原因是插入了.作为定界符的单引号。数据库尝试去执行#39;hn#39;,但是失败。如果攻击者提供特别的输入如:
Forename:jo#39;;drop table authors
Surname:
结果是authors表被删除,造成这种结果的原因我们稍后再讲。
看上去好象通过从输入中去掉单引号或者通过某些方法避免它们都可以解决这个问题。这是可行的,但是用这种方法做解决方法会存在几个困难。第一,并不是所有用户提供的数据都是字符串。如果用户输入的是通过用户id来查询author,那我们的查询应该像这样:
Select id,forename,surname from authors a#39; color=#39;cccccc#39;gt;
<CENTERgt;<H1gt;Login</H1gt;
<FORM action=#39;process_loginasp#39; method=postgt;
<TABLEgt;
<TRgt;<TDgt;Username:</TDgt;<TDgt;<INPUT type=text name=username size=100 e=passit value=#39;Submit#39;gt;<INPUT type=reset value=#39;Reset#39;gt;
</FORMgt;
</Fontgt;
</BODYgt;
</HTMLgt;
下面是process_login.asp的代码,它是用来控制登陆的:
<HTMLgt;
<BODY bgcolor=#39;000000#39; text=#39;ffffff#39;gt;
<FONT Face=#39;tahoma#39; color=#39;ffffff#39;gt;
<STYLEgt;
p { font-size=20pt ! important}
font { font-size=20pt ! important}
h1 { font-size=64pt ! important}
</STYLEgt;
<%LANGUAGE = JScript %gt;
<%
function trace( str ) {
if( Request.form(debug) == true )
Response.write( str );
}
function Login( ) {
var
12345678910下一页 这篇文章来自..,。username;
var passe = Re
原创力文档


文档评论(0)