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!

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" 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 -fno-stack-protection để tắt bảo vệ
của stack set boundary = 2:
- Dùng gdb 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 đè ebp
- Nguyên nhân hiện thông báo "Segmentation fault" do chương trình cố truy cập vào 1
phần của bộ nhớ ko được quyền truy cập. 20 chữ a 20 dài hơn 16 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 -fno-stack-protection để tắt bảo vệ
của stack set boundary = 2:
- Dùng gdb câu lệnh ‘disas’ để lấy địa chỉ push ebp trong hàm secretFunc():
0x0804846b
- Chạy câu lệnh python thêm địa chỉ 0x0804846b, ./bof1.o đ thực thi 1 đối số
2.2. bof2.c
- Build chương trình bằng gcc -g bof2.c -o bof2.o -fno-stack-protection để tắt bảo vệ
của stack set boundary = 2:
- Chạy câu lệnh python ./bof2.o để thực thi
3.3. bof3.o
Thực hiện ơng tự bof1 bof2
Thực hiện disas shell disas sup trong gdb để lấy đchi
| 1/4

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