기본 콘텐츠로 건너뛰기

라벨이 Linux인 게시물 표시

쉘코드 만들기 강좌

1. 쉘코드 프로그래밍 하기 void  main ( ) {         execve ( "/bin/sh" , NULL , NULL ) ; } // compile : gcc -o mkshell mkshell.c -static 단순히 리눅스 쉘을 실행시켜주는 프로그램인데, 우리에게 필요한건 저 쉘을 실행시켜주는 기계어 루틴입니다. 그리고 컴파일할때 반드시 -static 옵션을 주고 컴파일하세요!! 컴파일한후에, gdb 명령어로 실행시켜줍니다. 그리고 gdb의 disas 명령어로 execve() 루틴을 분석해보겠습니다. 2.쉘코드 분석하기 execve 함수는 위와같은 어셈블리 코드로 이루어져있군요. 분석을 해보도록 하겠습니다. 0x0804e723   < execve + 3 >:   mov     0x10 ( % ebp ) ,% edx  // 세 번째 파라미터 0x0804e726   < execve + 6 >:   push    % ebx 0x0804e727   < execve + 7 >:   mov     0xc ( % ebp ) ,% ecx   // 두 번째 파라미터 0x0804e72a   < execve + 10 >:  mov     0x8 ( % ebp ) ,% ebx   //문자열의 주소, 첫번째파라미터 0x0804e72d   < execve + 13 >:  mov    $ 0xb ,% eax 0x0804e732   < execve + 18 >:   int     ...