Blogs

BufferOverflow – Tràn bộ nhớ đệm buffer overflow 1 stack overflow 1

Bạn đang quan tâm đến BufferOverflow – Tràn bộ nhớ đệm buffer overflow 1 stack overflow 1 phải không? Nào hãy cùng VCCIDATA đón xem bài viết này ngay sau đây nhé, vì nó vô cùng thú vị và hay đấy!

XEM VIDEO BufferOverflow – Tràn bộ nhớ đệm buffer overflow 1 stack overflow 1 tại đây.

lỗi tràn bộ đệm, chắc hẳn ai cũng gặp lỗi này khi lập trình. Tràn bộ đệm xảy ra khi dữ liệu được lưu trữ vượt quá giới hạn của bộ đệm có độ dài cố định. do đó, dữ liệu có thể bị ghi đè trong bộ nhớ liền kề. dữ liệu bị ghi đè có thể bao gồm các bộ nhớ đệm, biến và dữ liệu điều khiển luồng khác trong suốt chương trình.

Ngày nay, hầu hết chúng ta đều viết mã bằng các ngôn ngữ cấp cao, vì vậy khi xảy ra lỗi tràn bộ đệm, chương trình sẽ bị sập, vì vậy việc sửa lỗi sẽ rất dễ dàng. nếu không thì sao? … nếu không, xin chúc mừng, rất có thể chương trình của bạn đã bị tấn công thông qua lỗi tiềm ẩn này. và lỗi này thường gặp ở các ngôn ngữ cấp thấp, chúng ta phải tự xử lý bộ nhớ khi chúng ta sử dụng các biến ví dụ như assembly, c, c ++.

Bạn đang xem: Buffer overflow la gi

Tôi chỉ đưa ra một số khái niệm cơ bản mà mọi người đều biết, bây giờ hãy xem cách nó tràn qua một ví dụ với chương trình ngôn ngữ c: d

một chương trình c đơn giản với mục đích nhập giá trị vào mảng buf để khóa biến thay đổi bằng giá trị val đã cho. nhập buf mà đổi key thì thuyền gì vậy ????. hãy làm nổ tung nó: d.

XEM THÊM:  Khau tham my tang sinh mon la gi

Xem ngay: ” Nominal Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích Nghĩa Của Từ Nominal

hãy chạy và xem điều gì sẽ xảy ra.

chương trình in ra địa chỉ của 2 biến buf = 0000000062fe30 và key = 0000000062fe4c địa chỉ này có nghĩa là gì ???. địa chỉ chỉ ra vị trí mà biến được đặt trong bộ nhớ. trừ đi địa chỉ của khóa với địa chỉ của buf, ta được kết quả là 28. nghĩa là hai biến cách nhau 28 byte.

Mặc dù mảng buf chỉ có 13kí tự nhưng hãy cùng nhập 28 kí tự vào xem sao nhé 😀 alt text Chương trình vẫn chạy đúng, biến key không bị thay đổi. Cùng nhập kí tự thứ 29 xem có gì xảy ra??? alt text Bùm…. Biến Key đã thay đổi giá trị. Như vậy là dữ liệu đã bị tràn sang vùng nhớ của biến Key.

vậy làm cách nào để thay đổi chính xác giá trại của khóa biến đổi = 2019? . ký tự thứ 29 mà chúng ta vừa nhập là kết quả của key = 49. và đó cũng là giá trị của ký tự char = 1 tương ứng với dec = 49 trong bảng mã acsii. mọi thứ rất đơn giản, chúng ta chỉ cần chuyển đầu số 2019 sang kiểu char. đầu tiên 2019 = 0000 0111 1110 0011 trong hệ nhị phân. vì mỗi ký tự sẽ có 8 bit, chúng tôi chia 8 bit một và kiểm tra bằng mã hóa acsii. 0000 0111 = 7 và 1110 0011 = 227 với loại dec. kiểm tra mã ascii tương ứng với … ký tự đặc biệt nên không viết được, tra bảng: d ..

XEM THÊM:  Transaction id là gì

các ký tự đặc biệt, tôi nên làm gì @@. (lấy ví dụ chính xác để bạn không biết @@). nếu chúng tôi không thể viết hoặc sao chép, chúng tôi phải sử dụng một chương trình nhỏ để in mã có chứa ký tự đặc biệt này.

Xem ngay: TOP 5 loại kem ủ tóc tốt nhất hiện nay cho mọi loại tóc

Ở trên mình có điền sẵn 28 số 1 và thêm 2 kí tự char có giá trị Dec là227 và 7. Cùng ghi giá trị ra file nhé. alt text

chương trình trên lưu tên ascii. Sau khi in tệp, chúng tôi nhận được một số ký tự rất đặc biệt. bây giờ chúng ta hãy làm bước cuối cùng, nhập chuỗi này vào mảng buf cùng với tệp và đợi kết quả. : d: d

alt text

boom …. vì vậy biến khóa đã thay đổi giá trị của nó theo ý bạn.

như vậy chúng ta có thể thấy tình trạng tràn bộ đệm khá nguy hiểm, nó làm thay đổi luồng chương trình, chương trình bị treo … và có thể bị bọn tội phạm lợi dụng.

Xem ngay: Duong phan giac cua mot goc la gi

Vậy là đến đây bài viết về BufferOverflow – Tràn bộ nhớ đệm buffer overflow 1 stack overflow 1 đã dừng lại rồi. Hy vọng bạn luôn theo dõi và đọc những bài viết hay của chúng tôi trên website VCCIDATA.COM.VN

Chúc các bạn luôn gặt hái nhiều thành công trong cuộc sống!

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button