Root-me – ELF x86 – Stack buffer overflow basic 1

stack_buffer_overflow_basic1_1.pngBài đầu tiên trong chuỗi tìm lỗ hổng phần mềm, lỗ hổng đầu tiên được nhắc đến ở đây là lỗi tràn bộ đệm. Nếu đã tìm hiểu về lỗi này sẽ thấy lỗi để khai thác ngay. Bài đầu tiên nên sẽ phân tích kỹ.

Ở đây,  biến check được khai báo trước biến buf nên trong stack biến check sẽ ở gần đỉnh ngăn xếp hơn.

Biến buf được khai báo kiểu mảng char[40] = 40 bytes nhưng trong hàm gets() lại nhận đến 45 bytes vậy nên lỗi tràn ngăn xếp ở đây. Nếu tràn sẽ tràn lên đỉnh và đó là biến check (4 bytes)

Nhiệm vụ bây giờ là tạo payload để tràn sang biến check để check = 0xdeadbeef 🙂 để chương trình nhảy vào “You win” và chúng ta sẽ nhận được shell “/bin/dash”. Đầu tiên là 40 ký tự bất kỳ vào biến buf, sau đó là giá trí 0xdeadbeef tràn vào check. Python rất hữu ích trong việc này:

stack_buffer_overflow_basic1_2.png

Nếu chỉ viết payload để tràn thay đổi biến thôi thì chưa đủ vì như vậy ta chưa điều khiển được shell ‘/bin/dash’. Như thế thì không thể mở được file .passwd được. Cần phải cat sau khi truyền payload vào đó. Sẽ có một bài nói về các cách truyền payload vào một chương trình và điều khiển shell nhé.

stack_buffer_overflow_basic1_3

pass : 1w4ntm0r3pr0np1s