Bảo mật - Bảo mật ứng dụng web
- quaivatit
- March 28, 2012
- Bảo mật - Bảo mật ứng dụng web
- 4,391 views
Đăng nhập vào quản trị không cần biết mật khẩu, kỹ thuật gọi là bypass login.
Bypass login là 1 kỹ thuật khá phổ biến mà hacker thích thử để tấn công website. Tỉ lệ thành công cũng khá cao, nhất là khi hacker gặp các website cùi bắp, như blog.itnet.vn chẳng hạn.
Bypass login là gì? Đây là 1 kỹ thuật mà hacker gõ 1 vài kí tự vớ va vở vẫn nào đó, nhằm vượt qua cơ chể kiểm tra của chương trình. Làm cho chương trình hiểu là chúng ta đang đường đường chính chính vào phần quản trị web.
Phân tích đăng nhập vào website
Khi xử lí thực hiện việc đăng nhập vào website của người dùng, Lập trình viên thông thường sẽ thực hiện 02 thao tác như sau:
1. Lấy thông tin người đăng nhập thông qua phương thức post, (ở đây, không có lập trình viên nào tồi đến nỗi sử dụng phương thức get đâu nhỉ?), ở đây chỉ có 2 trường dữ liệu là tài khoản đăng nhập và mật khẩu, ở đây mình tạm gọi là user, pass cho ... IT nhé.
2. Thực hiện câu lệnh SQL để kiểm tra user, pass có trùng trong dữ liệu hay không? nếu có thì ---> đăng nhập thành công và chuyển trang vào phần quản trị web để người dùng quản lí dữ liệu của mình.
Câu lệnh như sau: (Minh họa bằng code PHP và dữ liệu MySQL
Rõ ràng, xét về mặt logic thì đoạn chương trình trên hoạt động bình thường, cho kết quả đúng. Tuy nhiên, vấn đề không hề đơn giản như vậy. Hacker đầu óc nó quái dị (như mình chẳng hạn kaka ) - mình không chịu nhập vào những giá trị thông thường, mà hay nhập vào những thứ linh tinh vớ vẩn như sau:
Theo các bạn, chuyện gì sẽ xẩy ra?
Chúng ta kiểm tra từng bước nhé.
Dòng số 8 và dòng số 9, chương trình sẽ lấy 2 giá trị tương ứng, gán cho 2 biến $user và $pass.
Giá trị của chúng sẽ là:
$user = admin
$pass= ' OR '1'='1' --
Dòng số 10, 2 biến này sẽ được thay thế trong câu lệnh SQL
Câu lệnh SQL sẽ trở thành:
$sql = SELECT * FROM itnetvn_user WHERE user_name='admin' AND password='' OR '1'='1' --
Rõ ràng, trong mệnh đề OR, chỉ cần 1 đúng là tất cả đều đúng. Do đó, với câu lệnh này, chương trình sẽ lấy toàn bộ tài khoản có trong bảng: itnetvn_user.
Điều đó chứng tỏ dòng số 12 là mệnh đề đúng (ngoại trừ trường hợp bảng: itnetvn_user không có tài khoản nào )
Chuyện gì đến nó sẽ đến!
Xem thêm
Công ty thiết kế website, lập trình phần mềm NEVICOM
Bài viết khác:
- Email Class PHP - Gửi Email bằng SMTP server. Full class_smtp source php
07/06/2012
- Gửi mail SMTP - PHP đơn giản nhất - Send Mail using SMTP and PHP
01/06/2012
- OpenID là gì | hướng dẫn cách sử dụng OpenID của yahoo, gmail bằng PHP. Đăng nhập gmail, yahoo bằng PHP
26/05/2012
- Ajax file upload - upload file tự động bằng PHP sử dụng ajax
26/05/2012
- Xử lý XML trong PHP5 một cách nhanh chóng và hiệu quả
26/05/2012
- 17 tùy biến .htaccess để cấu hình lại website, cấu hình lại appache để website bạn chạy theo ý muốn mình
19/05/2012
- Sao file .htaccess không chạy được trên windows? không chạy trên localhost
19/05/2012
- Help me! Làm sao để tạo được file .htaccess trên windows?
19/05/2012
- Phân tích lổ hỏng upload file và cách phòng chống (P1)
16/03/2012
- PHP code tạo captcha chống auto spam đơn giản, học PHP ai cũng có thể làm được
02/03/2012
- PHP căn bản: Bài 1 - Hướng dẫn cài đặt webserver trên windows - để chạy được php trên máy tính của mình
17/02/2012
Bình luận