Chương trình flow.c: giải thích nguyên nhân thông báo "Segmentation fault" và tìm cách để không xuất hiện thông báo sau khi hack | Tài liệu môn an toàn thông tin
- Build chương trình bằng gcc-g flow.c-o flow.o và-fno-stack-protection để tắt bảo vệ của stack và set boundary = 2:- Dùng gdb và câu lệnh disas trong hàm change() để lấy địa chỉ push ebp. -Thêm địa chỉ 0x0804843b từ thấp đến cao (phải sang trái từng byte 1) vào lệnh print để ghi đè và ebp. - Nguyên nhân hiện thông báo "Segmentation fault" là do chương trình cố truy cập vào 1
phần của bộ nhớ mà nó ko được quyền truy cập. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!
Môn: An toàn thông tin (INSE330380)
Trường: Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
1. Tấn công buffer overflow chương trình flow.c: giải thích nguyên nhân thông báo
"Segmentation fault" và tìm cách để không xuất hiện thông báo sau khi hack.
- Build chương trình bằng gcc -g flow.c -o flow.o và -fno-stack-protection để tắt bảo vệ
của stack và set boundary = 2:
- Dùng gdb và câu lệnh disas trong hàm change() để lấy địa chỉ push ebp 0x0804843b
-Thêm địa chỉ 0x0804843b từ thấp đến cao (phải sang trái từng byte 1) vào lệnh print để ghi đè và ebp
- Nguyên nhân hiện thông báo "Segmentation fault" là do chương trình cố truy cập vào 1
phần của bộ nhớ mà nó ko được quyền truy cập. 20 chữ a có 20 dài hơn 16 ký tự nên gây tràn bộ nhớ.
- Dùng gdb core sau đó ‘run’, tiếp theo dùng ‘print exit’ để tìm địa chỉ exit: 0xf7e449e0
-Vào ubuntu thực hiện câu lệnh sudo sysctl -w kernel.randomize_va_space=0
-Thêm địa chỉ exit vào sau:
-Không còn hiện thông báo
2. Thực hiện buffer overflow attack trên các chương trình bof1.c, bof2.c, bof3.c 2.1. bof1.c
- Build chương trình bằng gcc -g bof1.c -o bof1.o và -fno-stack-protection để tắt bảo vệ
của stack và set boundary = 2:
- Dùng gdb và câu lệnh ‘disas’ để lấy địa chỉ push ebp trong hàm secretFunc(): 0x0804846b
- Chạy câu lệnh python và thêm địa chỉ 0x0804846b, ./bof1.o để thực thi và 1 là đối số 2.2. bof2.c
- Build chương trình bằng gcc -g bof2.c -o bof2.o và -fno-stack-protection để tắt bảo vệ
của stack và set boundary = 2:
- Chạy câu lệnh python ./bof2.o để thực thi 3.3. bof3.o
Thực hiện tương tự bof1 và bof2
Thực hiện disas shell và disas sup trong gdb để lấy đchi