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

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