Khai thác lỗi Buffer Overflow trên stack phần 1

khanhhoangbkdn

VIP Members
07/10/2016
34
65 bài viết
Khai thác lỗi Buffer Overflow trên stack phần 1
Trong bài này mình sẽ sử dụng 1 chương trình Over.exe bị lỗi buffer overflows và dùng Imunity debugger để khai thác.

Buffer Overflow.png
  • File Over sẽ đọc 1 tệp tin và in ra cửa sổ chương trình .
  • Imunity debugger
  • Arwin
  • windows xp sp2 32bit
- Load over.exe vào Imunity dbg , tạo thử 1 tệp bof.txt có độ dài bất kì 'run' chương trình trong của sổ Imunity dbg Load file vào và quan sát trên cửa sổ stack

1.jpg

Kết quả :

2.jpg

- Vậy file Over đọc dữ liệu trong file bof.txt và hiển thi ra .Mà file bof.txt không giới hạn kích thước nên ta có thể nhập vào nội dung tùy ý ,Ta thử nhập thêm 1 số kí tự 'a' nữa xem sao:

3.jpg


- Chương trình sẽ bị dừng lại và báo lỗi Access violation when executing [61616161] đọc trên cửa sổ stack ta thấy chương trình dùng lại tại địa chỉ 0x0012F668 đây là địa chỉ trả về của chương trình ,vậy ta thử tính buf của chương trình là bao nhiêu bằng cách lấy địa chỉ trả về trừ đi địa chỉ bắt đầu ghi kí tự 'a' và trừ đi 4 byte chứa địa chỉ trả về = 0x0012F668 - 0x0012F600 - 4 byte = 100 .Vậy để khai thác lỗi trên chương trình này ta sẽ chèn 100 kí tự bất kì vào file bof.txt + 4 byte địa chỉ trả về + shellcode để khai thác chương trình.

Nhưng trước khi khai thác chương trình thì chúng ta có thể tìm cách để thay đổi luồng thực thi của chương trình theo ý của mình rồi chúng ta mới hiểu cách khai thác 1 chương trình.

- Lấy 1 địa chỉ bất kì trong buf trên stack để đặt breakpoint hardware on access , cứ khi nào mà truy cập vào giá trị trong địa chỉ đó thì chương trình sẽ dừng lại . ở đây mình lấy địa chỉ 0x0012F61C

- Ta ctrl +f2 để reset là chương trình và chạy chương trình lên đến chỗ "Browse.. " file thì dừng lại và tiến hành đặt breakpoint hardware ,on access Work tại giá trị đó.


4.jpg

- Load file bof.txt vào chương trình và tiếp tục F9 để chạy chương trình đến khi hex dump chỉ vào vùng nhớ chứa dữ liệu file bof.txt đến đây ta đặt 1 bp tại 0x00401710 để tiện cho các lần sau debug đây là đoạn code ghi giá trị của tệp bof.txt vào vùng nhớ chương trình.

5.jpg

- Tìm đến địa chỉ 0x0012F664 đây là địa chỉ trở về của chương trình >>> ta thay đổi luồng thực thi của chương trình bằng cách modify value tại địa chỉ này và ta có thể cho chương trình chạy về bất cứ chỗ nào mà chúng ta muốn .làm đi làm lại vài lần các bạn sẽ hiểu cách vận hành của chương trình.

6.png

- Mình thử thay đổi chương trình về lại lại giá trị 0x004016FC chưa câu lệnh PUSH EAX

7.png

- F8 để chạy từng lậy ta thấy sau lệnh RETN chương trình trở về địa chỉ 0x003016FC

8.jpg

- Vậy ta đã biết thay đổi luồng thực thi của chương trình và hiểu được cách thay đổi địa chỉ trả về của chương trình theo đúng ý của mình

- Phần sau mình sẽ nói cách khai thác chương trình trên bằng cách chèn vào 1 file chứa shellcode để gọi Calc, shell hoặc bất cứ chương trình gì trên windows.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: linh24 and Cord
Lâu lắm mới thấy có người vẫn còn trung thành với window xp như vại :D.
Lần sau bác có hướng dẫn thì nói luôn cái debug-er nhé :D. Chứ bác nói F8 với F9 mà chả biết để làm chi trong cái chương trình làm em khó hiểu quá :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
krone;n62125 đã viết:
Lâu lắm mới thấy có người vẫn còn trung thành với window xp như vại :D.
Lần sau bác có hướng dẫn thì nói luôn cái debug-er nhé :D. Chứ bác nói F8 với F9 mà chả biết để làm chi trong cái chương trình làm em khó hiểu quá :D

Dùng winxp cho nó tiện và viết tắt cho nó nhanh bác ak :))
Bài này cơ bản cho người mới tìm hiểu thôi :3
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
File Over chết rồi ạ anh ơi
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thẻ
buffer overflow lỗi tràn bộ nhớ đệm
Bên trên