科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

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

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

结果是authors表被删除,造成这种结果的原因我们稍后再讲。看上去好象通过从输入中去掉单引号或者通过某些方法避免它们都可以解决这个问题。这是可行的,但是用这种方法做解决方法会存在几个困难。第一,并不是所有用户提供的数据都是字符串。如果用户输入的是通过用户id来查询author,那我们的查询应该像这样:

Select id,forename,surname from authors where id=1234

在这种情况下,一个攻击者可以非常简单地在数字的结尾添加SQL语句,在其他版本的SQL语言中,使用各种各样的限定符号;在数据库管理系统JET引擎中,数据可以被使用'#'限定。第二,避免单引号尽管看上去可以,但是是没必要的,原因我们稍后再讲。

我们更进一步地使用一个简单的ASP登陆页面来指出哪些能进入SQLSERVER数据库并且尝试鉴别进入一些虚构的应用程序的权限。

这是一个提交表单页的代码,让用户输入用户名和密码: 以下为引用的内容:

<HTML> 
<HEAD> 
<TITLE>Login Page</TITLE> 
</HEAD> 

<BODY bgcolor='000000' text='cccccc'> 
<FONT Face='tahoma' color='cccccc'> 
<CENTER><H1>Login</H1> 
<FORM action='process_loginasp' method=post> 
<TABLE> 
<TR><TD>Username:</TD><TD><INPUT type=text name=username size=100 width=100></TD></TR> 
<TR><TD>Password:</TD><TD><INPUT type=password name=password size=100 withd=100></TD></TR> 
</TABLE> 
<INPUT type=submit value='Submit'><INPUT type=reset value='Reset'> 
</FORM> 
</Font> 
</BODY> 
</HTML> 
下面是process_login.asp的代码,它是用来控制登陆的: 以下为引用的内容:
<HTML> 
<BODY bgcolor='000000' text='ffffff'> 
<FONT Face='tahoma' color='ffffff'> 
<STYLE> 
p { font-size=20pt ! important} 
font { font-size=20pt ! important} 
h1 { font-size=64pt ! important} 
</STYLE> 
<%@LANGUAGE = JScript %> 
<% 
function trace( str ) { 
if( Request.form("debug") == "true" ) 
Response.write( str ); 
} 
function Login( cn ) { 
var username; 
var password; 
username = Request.form("username"); 
password = Request.form("password"); 
var rso = Server.CreateObject("ADODB.Recordset"); 
var sql = "select * from users where username = '
" + username + "' and password = '" + password + "'"; trace( "query: " + sql ); 
rso.open( sql, cn ); 
if (rso.EOF) { 
rso.close(); 
%> 
<FONT Face='tahoma' color='cc0000'> 
<H1> <BR><BR> 
<CENTER>ACCESS DENIED</CENTER> 
</H1> 
</BODY> 
</HTML> 
<% Response.end return; } 
else { 
Session("username") = "" + rso("username"); 
%> 
<FONT Face='tahoma' color='00cc00'> 
<H1> <CENTER>ACCESS GRANTED<BR> <BR> 
Welcome, <% Response.write(rso("Username"));
 Response.write( "</BODY></HTML>" ); Response.end } 
} 
function Main() { //Set up connection 
var username 
var cn = Server.createobject( "ADODB.Connection" ); 
cn.connectiontimeout = 20; 
cn.open( "localserver", "sa", "password" ); 
username = new String( Request.form("username") ); 
if( username.length > 0) { 
Login( cn ); 
} 
cn.close(); 
} 
Main(); 
%>
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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