Evernote Export
|
|
- 익태 임
- 5 years ago
- Views:
Transcription
1 Exploit writing tutorial part 1 : Stack Based Overflows ** 번역목적 - 이 Article 은 corelan.be 에있는버퍼오버플로우에관한문서이다. 총 11 개의 Article 로구성되어있으며, 과연언제까지번역작업을할지모르겠다. -_-; 오역은원문을보시면서알아서해석하시기바란다. 영어공부및 BOF 개념이해목적으로번역 번역 : Atlantic 이메일 : appff@tistory.com 1. Intro Published : 2009 년 7 월 19 일 By Corelan Team 지난금요일 (2009 년 7 월 17 일 ), 닉네임이 'Crazy_Hacker' 라는사람이 Easy RM to MP3 Conversion Utility ( on XP SP2 En) 에서의취약점을 packetstormsecurity.org. (See 를통해서레포팅했다. 이취약점레포트는취약점의개념증명까지포함되었다. ( 그런데 XP SP3 En 의나의가상머신에서는실패했다. ) 다른 exploit 은시간이조금흐른후에릴리즈되었다. ( 포스팅되었다는것 ) -> 다른 exploit 은원문에링크가달려있으나밀웜사이트가폐쇄되어더이상접속이안되는것으로알고있음 당신은 PoC(Proof Of Concept) 코드를복사하고그것을실행할수있으며코드가실행되지않거나아니면당신이그 exploit 의원리를이해하려고시도하고그 exploit 의문제가되는코드를수정하거나아니면단지아무런사전준비지식없이그 exploit 을빌드할것이다. ( 그러나 : 당신이 Disassemble 을이해한다면 ( 어셈블리어 ) 쉘코드를정말빠르게읽고이해할수있을것이다. 필자는당신이단순히그 exploit 을얻고그것을실행하기위한조언은하지않을것이다. 만약에당신의컴퓨터에백도어가설치된다면이라는문제는아래의질문들을내포한다. 그질문은 : 어떻게 exploit 작성자들은그들의 exploit 들을빌드하는가? exploit 을가능케하는발견가능한문제를가진프로세스가무엇인지? 어떻게취약정보를이용해서당신의 exploit 을빌드할것인지? ) 내가이블로그를시작한이후로줄곧버퍼오버플로우의기초튜토리얼을작성하는것은줄곧내가해야할 일의목록에있었다. 하지만나는결코튜토리얼을만들시간이없었거나단순히그것을까먹었을뿐이다. 내가오늘그취약점레포트와그 exploit 을보았을때나는이취약점레포트가아주완벽한 exploit 을작성하는튜도리얼로서적합하다고판단했다. 그것은깔끔하고, 단순했으며나에게안정적인버퍼오버플로우와그렇게동작하는코드를작성하는몇가지기술을설명하는것을가능케했다. ( 좋은예제라는말 ) 그래서아마도이번이좋은기회일것이다. 위에서언급한취약점레포트에포함된 exploit 이이미동작하던지그렇지않던지간에필자는여전히 "Easy RM to MP3 conversion utility" 의그취약점을예제로사용할것이며, 우리는앞으로원래의 exploit 코드의어떠한참고없이 (Copy & Paste 를안하겠다는말 ) exploit 을작성하는단계를면밀히살필것이다. 우리는단지아무런사전지식없이 exploit 을작성할것이고이것은 XP SP3 에서동작하게만들것이다. 우리가계속이야기를하기전에곧바로당신이한가지알아야할것이있다. 이문서는순수하게교육적인 목적들에집중해서작성되어있다. 필자는누군가가이정보를실질적으로컴퓨터를해킹하거나불법적인 용도로사용하는것을원하지않는다. 그래서나는이문서를얻고불법적인용도로사용하는사람들의
2 행동에책임을질수없다. 만약당신이이것에동의하지않는다면당신은이웹사이트를계속해서 접속하는것이금지될것이다. 그리고즉시이웹사이트를떠나기바란다. 그렇긴해도어쨌든그정보의종류는대개그취약점의기본정보를포함하고있는취약점레포트에서얻을수있는것들이다. 이번경우에는취약점레포트는 "Easy RM to MP3 Converter version universal buffer overflow exploit that creates a malicious.m3u file" 을언급하고있다. 다른말로하자면당신은악의적인.m3u 파일을생성할수있고그프로그램속에함께배포하고 exploit 으로작동되게할수있다. 이러한취약점레포트들은아마대부분상세하게기술되어있지않을것이다, 하지만많은경우들에서당신은어떻게 crash 나그어플리케이션이기묘한동작을하게끔하는지에대한방법을얻을수있다. 만약그렇지않다면보안연구가는아마도누군가가처음으로찾아낸취약점을판매자에게알려주기원했을것이고그래서판매자들은취약점을수정할기회를얻거나아니면단순히그정보를취약점발견자들스스로간직하기를원할것이다. exploit 을작성하는방법에대한튜토리얼의첫번째시리즈를시작하기전에안내할사항이있다. 만약당신이 exploit 작성에대한이슈라던가질문, 팁이나트릭에대한토론을하기원한다면 discussion forum 을이용하기바란다. 당신은 /index.php/forum/writing-exploits 에서포럼에접속할수있다. 2. Verify the bug 첫번째로, 우리는그프로그램이악의적으로작성된 m3u file 을열때확실히 crash 를발생시키는지확인할것이다. ( 아니면당신이스스로만든코드를그프로그램에입력하고언제 crash 가발생하는지찾아라 ) 당신스스로그취약점을가진 Easy RM to MP3 설치파일을구하고 Windows XP 가구동중인컴퓨터에그것을설치해라. 그취약점레포트는 XP SP2 (english) 에서동작한다고기술하고있으나필자는 XP SP3(english) 를사용할것이다. Local copy of the vulnerable application can be downloaded here : Easy RM to MP3 Conversion Utility (2.8 MiB, 4,476 hits) You do not have permission to download this file. Quick sidenote : 당신은 oldapps.com 과 oldversion.com 에서프로그램의과거버전들을찾을수있거나 exploit.db.com ( 종종그취약점을가진프로그램의 local copy 를제공한다. ) 에서찾아볼수있다. 우리는다음의간단한 perl 스크립트로우리가그취약점에대해서더많은정보를발견하는것을도울 m3u 파일을생성할것이다.
3 my $file= "crash.m3u"; my $junk= "\x41" x 10000; open($file,">$file"); print $FILE "$junk"; close($file); print "m3u File Created successfully\n"; m3u file 을생성하기위해서 perl 스크립트를실행하라 개의 A(\x41 은 A 를표현하는 16 진수이다. ASCII) 로채우고있는 m3u 파일을 Easy RM to MP3 에서오픈한다. 프로그램은 error 를발생시키지만그에러는정확하게제어되고프로그램은 crash 를발생시키지않는다 개의 A 로채우는스크립트로수정하고다시시도하자. 그리고같은동작을해본다. ( exception 이정확하게제어되고, 우리는여전히다른도움이되는덮어쓰기 [Overwrite] 를하지못한다. ) 이제스크립트를 개의 A 로채우게끔바꾸고 m3u 파일을생성프로그램에서그것을오픈한다. 뻥 ~ 프로그램이죽었다. 좋다. 그러면그프로그램은우리가 개에서 개의 A 를포함하는파일을오픈하면 crash 를 일으킨다. 하지만우리가이것으로무엇을할것인가? 3.Verify the bug - and see if it could be interesting 확실히모든프로그램이어떤 exploitation 으로부터 crash 를발생시키는것은아니다. 많은경우에서프로그램의 crash 는 exploitation 으로이어지지않을것이다. 하지만때때로그렇게된다. "exploitation" 라는것은어떤프로그램이의도하지않은어떤행위 ( 예를들면당신의코드를실행시킨다거나 ) 를하게끔하는것을의미한다. 프로그램스스로의흐름을제어하는것은 ( 그리고그것을어딘가에서다른곳으로 redirect 하는것 ) 어떤다른행위를하게만들기위한가장쉬운방법이다. 프로그램의흐름을제어하는것은 Instruction Pointer 나 Program Counter 에의해서행해질수있다. Instruction Pointer 나 Program Counter 는다음에실행해야할명령어의위치가어딘지담고있는 CPU 레지스터이다. 프로그램이하나의매개변수와함께어떤함수를호출했다고생각해보자. 그함수를실행하기전에프로그램은현재의메모리위치를 instruction pointer 에저장한다. 이렇게현재메모리위치를함수가시작되기전에저장하는이유는프로그램이어떤임의의함수가완료되었을때다시돌아갈주소를알기위함이다. 만약당신이그포인터안에있는값을변경할수있고당신이만든코드조각을포함하는주소의위치를그포인터가가리키게할수있다면 ( 현재의메모리위치를변조하는데이메모리위치를 exploit 코드가담겨진메모리위치로변조한다는말이다. ) 당신은그프로그램의흐름을변경하고다른행위를실행시킬수있을것이다. ( 원래의위치로다시돌아가는것외의어떤행위 ex: exploit, program quit, etc.. ) 위에서말한흐름을제어한이후에니가실행하기를원하는코드라는것은 'shellcode' 를나타낸다. 만일우리의쉘코드를그어플리케이션에서실행할수있다면, 우리는그것을 exploit 을한다라고말할수있을것이다. 많은경우에이포인터라는것은 EIP 라는용어로참조된다. 이레지스터의크기는 4Byte 이고, 당신이그 4Byte 를변조할수있따면당신은그어플리케이션을가졌다고할수있다. ( 그리고그어플리케이션이실행중인컴퓨터도포함된다. ) -> 결국에는 EIP 를변조할수있으면그프로그램이 Exploit 될수있다는것이므로그프로그램이실행중인 컴퓨터마저도제어권을가져올수있다는의미다. ( 우리가원하는코드를실행시킬수있으므로 ) 4.Before we proceed - some theory
4 우리가앞으로필요하게될몇가지용어들을설명한다. 모든윈도우프로그램들은메모리의일부를사용한다. 프로세스메모리는 3 가지주요요소를포한한다. Code Segment ( 프로세서가실행하는명령어들이위치한다. EIP 는다음에실행되어야할명령어를항상유지한다. ) Data Segment ( 변수들, 동적메모리영역들 ) Stack Segment ( 함수로전달되는데이터와매개변수들, 그리고지역변수로사용되는공간, 스택은 ( 낮은메모리에서시작한다. ) 페이지의가상메모리끝부분에서부터시작해서아래로증가한다 ( to a lower address ). 스택의 TOP 에어떤것이 push 되고 POP 은스택으로부터하나의 4Byte 값이제거되면서그값을하나의레지스터에넣어준다. 만약당신이스택메모리에직접적으로접근한다면당신은스택의최상단을가리키는 ESP (Stack Pointer) 를사용할수있다. push 가되고난후 ESP 는더낮은메모리주소를가리킬것이다. ( 주소는스택에 push 된데이터의사이즈만큼감소한다. 이때 push 하는데이터가주소이거나포인터라면그크기는 4Byte 이다. ) POP 이되고난후 ESP 는더높은메모리주소를가리킬것이다. ( 주소는증가하게되고 ( 만약주소나포인터일경우 4Byte 만큼늘어날것이다. )). 스택으로부터하나의요소가제거되고난후에증가가발생한다. 함수나서브루틴에진입했을때, 스택프레임이생성된다. 이프레임은부모함수들의매개변수를유지하고 서브루틴으로향하는매개변수들의저장에이용된다. 스택의현재주소는스택포인터 (ESP) 를통해서 접근할수있으며함수의 Current base 는 base pointer (EBP or frame pointer 라고함 ) 안에포함된다. CPU 의범용레지스터들은아래와같다. (Interl, x86) : EAX : 가산기 : 계산을수행할때사용되고, 함수호출때리턴값을저장한다. 기본적인연산예컨데덧셈, 뺄셈, 비교연산들에서범용레지스터로사용된다. EBX : base ( 베이스포인터는범용목적이존재하지않는다.) 범용목적은없으며데이터저장용으로사용된다. ECX : Counter : interation 에이용되며. ECX 는아래로내려가면서카운팅한다. ( 뺄셈연산을하면서카운팅한다는뜻 ) EDX : Data : EAX 레지스터의확장용도로사용된다. 저장할데이터공간을확장함으로서좀더복잡한연산 ( 곱셈, 나눗셈 ) 이가능하게한다. ESP : stack pointer EBP : base pointer ESI : souce index : 입력받은데이터의위치를저장한다. EDI : destinatioin index : 데이터연산의결과를어디에저장하였는지그위치를가리킨다. EIP : instruction pointer 5.Process Memory
5 Win32 환경에서어떤프로그램이실행되었을때, 프로세스가생성되고가상메모리를할당받는다. 32bit 프로세서에서는할당받은가상메모리의범위가 0x 부터 0xFFFFFFFF 까지이며 0x 부터 0x7FFFFFFF 까지는유저영역으로할당되며 0x 부터 0xFFFFFFFF 까지는커널영역으로할당받는다. 윈도우는선형메모리모델을사용하고, 이선형메모리모델이라는것은 CPU 가페이징이나세그먼테이션을사용하지않고사용가능한모든메모리영역을직접적 / 순차적 / 연속적으로다룰수있음을의미한다. 커널영역메모리는 OS 에의해서만접근할수있다. 프로세스가생성되었을때, PEB(Process Execution Block) 과 TEB(Thread Environment Block) 이 생성된다. PEB 는현재프로세스와관련된유저영역의요소들을포함한다. : 메인함수의주소 로더데이터의주소 ( 모든 DLL / 프로세스에로드될수있는모듈들의리스트로사용된다. ) 힙에있는정보를가진주소 TEB 는스레드의상태와아래의내용을설명한다. 메모리안의 PEB 위치정보쓰레드에포함되는스택의위치정보 SEH 체인속의첫번째요소주소 ( 튜토리얼 3 과 3b 에서 SEH 체인이무엇인지에대해서더배울것이다. ) 그프로세스안에속한각쓰레드는하나의 TEB 를가진다. Win32 프로세스메모리맵은아래와같다 :
6 프로그램이미지와 DLL 정보를가진 text 세그먼트는읽기전용이며이영역은단순하게프로그램코드만을포함한다. 이영역이읽기전용인이유는사람들이프로그램코드를수정하는것을방지하기위해서이다. 이메모리세그먼트는고정된크기를가진다. 데이터세그먼트는전역변수나정적프로그램변수를저장하는데사용되며, 데이터세그먼트는초기화된전역변수, 문자열그리고다른상수들을위해서사용된다. 데이터세그먼트는고정된크기를가지고쓰기가가능하다. 힙세그먼트는나머지프로그램변수들을위해서사용된다. 힙영역은원하는대로작아지고커질수있다. 힙의모든메모리공간은 allocator ( and deallocator ) algorithms 에의해서제어된다. 이런알고리즘에의해서메모리영역이예약되며, 힙영역은높은메모리주소로커진다.
7 DLL, 프로그램코드, imports ( dll 에의해서아용된함수의리스트, 다른프로그램이나다른 dll ), 그리고 exports ( 다른프로그램들에서사용가능하게만들어진함수 ) 들은.text 세그먼트의한부분이다. 6.The Stack 스택은프로세스메모리의한조각인데, LIFO( 후입선출 ) 구조를가진데이터구조다. 스택은 OS 에의해서공간을할당받는데, 쓰레드가생성된시점에각각의쓰레드는하나씩할당받는다. 또한쓰레드가종료되었을때스택은 clear 된다. 스택의크기는그것이생성되었을때정의되고변할수없다. LIFO 방식으로동작되고스택이생성되고나면그크기가변할수없다는사실은 OS 가스택을관리하기위해서복잡한구조나메커니즘을필요로하지않음을의미하며, 결과적으로스택은매우빠르지만크기는제한되어있다는점이다. LIFO( 후입선출 ) 은가장최근에위치된데이터가 (push 명령어의결과 ) 스택에서처음으로제거된다는뜻이다. (pop 명령어에의해 ) 스택이생성되면, 스택포인터는스택의최상단을가리킨다. ( 스택의가장높은주소 ). 어떤정보가스택에 push 되면서, 이스택포인터는감소한다. ( 낮은메모리주소로 ) 그래서본질적으로스택은낮은주소로성장한다. 스택은지역변수나함수선언또는저장하는데많은시간이필요하지않은정보들을저장한다. 스택에더많은 데이터가추가되면서 (pushed onto the stack), 스택포인터는감소하며, 더낮은메모리주소를가리킨다. 함수가호출되면, 함수매개변수들은물론레지스터들의값 (EBP,EIP) 도스택에함께저장된다. 함수가 리턴되면원래프로그램의흐름으로다시복귀하기위해서저장된 EIP 값을스택으로부터참조해서그값을 주소로하여해당하는위치로돌아간다. 우리는아래의간단한코드를이용해서그동작을설명할것이다. : #include <string.h> void do_something(char *Buffer) { char MyVar[128]; strcpy(myvar,buffer); } int main (int argc, char **argv) { do_something(argv[1]); } ( 당신은코드를컴파일할수있을것이다. Dev-C 에 Win32 console project 를 (C 언어를 이용한다 C++ 이아니다.) 생성하고위의코드를복사하고그것을컴파일한다. ) 필자는그프로젝트의 이름을 stacktest 로했다. 프로그램을아래와같이실행한다. : "stacktest.exe AAAA". 어떠한것도리턴되지않는다.
8 이어플리케이션은하나의매개변수를갖는다. ( argv[1] 과 do_something() 함수에전달되는매개변수. do_something() 의매개변수는 128byte 길이를가진지역변수로복사된다. 만약그매개변수가 127byte 보다길어지면 (+ 스트링의끝을알리는하나의 NULLL byte), 그버퍼는아마도넘쳐날것이다. do_something(param1) 함수가메인으로부터호출되었을때아래와같은일들이발생한다. : 하나의스택프레임이생성될것이고부모스택의바로위에생성된다. 스택포인터 (ESP) 는새롭게생성된 스택의가장높은주소를가리킨다. 이것이스택의 top 이다. ( 디버거에서이런형태를볼수있는데아래를참조해라 ) 아래의그림에서 ESP 는 0022FF5C 를가리킨다. 이주소에우리는저장된 EIP 를볼수있으며 (Return to... 어쩌고 ~ 저장된 ), 매개변수 ( 이예제에서는 AAAA) 를가리키는포인터가아래에존재한다. 이포인터는 CALL 명령어가실행되기전에스택에되었다. 다음으로함수의 prolog 가실행된다. prolog 는기본적으로프레임포인터 (EBP) 를스택에저장하는데, 나중에이함수가리턴될때그것을복구하기위해서이다. EBP 를저장하는명령어는 push ebp 이다. ebp 가저장된이후에 ESP 는 4Byte 만큼감소된다.
9 다음으로 ebp 가 push 되고나면현재의스택포인터 (ESP) 가 EBP 에저장된다. 그시점에서 ESP 와 EBP 는똑같이현재의스택의 top 를가리킨다. 그시점이후로스택은 ESP( top of the stack at any time ) 와 EBP ( the base pointer of the current stack ) 에의해서참조되어진다. 이방법으로프로그램은 EBP 에 offset 을이용해서변수들을참조할수있다. 많은함수들이다음과같은시퀀스로시작한다. : PUSH EBP, 다음에는 MOVE EBP, ESP 그래서만약에당신이스택에또다른 4bytes push 연산을했다면, ESP 는다시감소될것이고 EBP 는여전히가리키던그곳을유지할것이다. 당신은 EBP-0x8 과같은명령어를이용해서저장해둔 4byte 매개변수들을참조할수있을것이다. 다음으로우리는 MyVar(128bytes) 의선언과할당을위해서스택공간이어떻게변하는지볼것이다. 몇몇공간들은데이터를보관하기위해서스택으로부터할당된다. ESP 는 bytes 만큼감소한다. 이 bytes 의길이는 128 bytes 를넘길가능성이있는데왜냐하면할당하는루틴이컴파일러에의해서결정되기때문이다. ( 입력이얼만큼될지모르는상태에서이미코드상에서사용할변수의크기를고정시켜버려서오버플로우의가능성이있다라고이해하면될듯하네요. -_-; ) Dev-C++ 의경우에이는 0x98 bytes 이다. ( 128 을 hex 로변환 ) 그래서당신은 SUB ESP,0x98 이라는 명령어를볼수있을것이다. 이명령어가 128bytes 길이의변수를위한사용가능한공간을할당하는것임을 알수있다.
10 그함수의 disassembly 는다음과같을것이다. : /$ 55 PUSH EBP E5 MOV EBP,ESP EC SUB ESP, B45 08 MOV EAX,DWORD PTR SS:[EBP+8] ; C MOV DWORD PTR SS:[ESP+4],EAX ; A0. 8D85 78FFFFFF LEA EAX,DWORD PTR SS:[EBP-88] ; A MOV DWORD PTR SS:[ESP],EAX ; A9. E CALL ; \strcpy AE. C9 LEAVE AF \. C3 RETN ( 코드에대해서너무걱정하지마라. 당신은명백하게함수의 prolog(push ebp and move ebp,esp) 를볼수있으며또한 MyVar(SUB ESP,98) 을위한공간이어디에서할당되는지도볼수있다. 그리고몇몇 MOV 와 LEA 명령어들도볼수있다. ( 기본적으로 strcpy 함수를위한매개변수를세팅하고 argv[1] 이존재하는주소와 MyVar 에그것을복사해넣기위한코드이다.)) 이함수속의 strcpy 함수가없다면, 이함수는현재종료될것이고스택을정리할것이다. 기본적으로 ESP 는 EIP 가저장된위치로돌아갈것이고 RET 명령어를호출할것이다. 이경우 RET 명령어는스택으로부터저장된 EIP 포인터를가져오고그곳으로점프한다.( 그러므로 do_soething 의어딘가에서 RET 가호출되면프로그램의흐름은다시메인함수로돌아가게될것이다.)
11 epilog 명령어는 LEAVE 명령어에의해서실행된다. (LEAVE 명령어는프레임포인터와 EIP 둘다복원할 것이다. ) 필자의예제에서우리는 strcpy() 함수를가진다. 이함수는버퍼가가리키는주소로부터데이터를읽고, <MyVar 변수를위한공간 > 에그값을저장하는데, null byte( string terminator ) 를만날때까지모든데이터를읽는다. 데이터를복사하는동안 ESP 는기존값이유지된다. strcpy() 함수는 push 명령어를이용해서스택에값을써넣지않는다. 기본적으로 index( 예를들면 ESP, ESP+1, ESP+2, etc) 를이용해서하나의바이트를읽고스택에저장한다. 그래서복사가끝난후에도 ESP 는여전히 string 의시작지점을가리킨다. 그것의의미는만약에버퍼에있는데이터가 0x98 보다길어지면 strcpy() 함수는저장된 EBP 나 EIP ( 그리고 그외의것들 ) 을 overwrite 할수있다. source location ( 이경우에는하나의문자열 ) 이 null byte 를 만날때까지계속해서읽고쓸것이다.
12 ESP 는여전히문자열의시작지점을가리킨다. strcpy() 함수가완료되면아무런문제도발생하지않는다. strcpy() 이후에그함수는끝이난다.(do_something 함수 ) 그리고재미난결과를얻을수있다. 이후에함수의 epilog 가시작된다. 기본적으로 EIP 가저장된위치로 ESP 가점프하고, RET 명령어를실행한다. 그림과같은상태에서프로그램은 ( 덮어쓰기된이후에우리의경우 AAAA or 0x ) 덮어씌여진 EIP 를가지고올것이고그주소 (0x ) 로점프할것이다. 이렇게함으로써당신은 EIP 를제어할수있는것이다. 짧게이야기하자면, EIP 를제어함으로써당신은기본적으로그함수가원래의흐름으로다시복기하기위한리턴주소를변경하는것이다. 물론당신이버퍼오버플로우를이용해서리턴값을변경한다면, 그것은더이상 "normal flow" 가아니다. 그래서당신은 MyVar, EBP, EIP 속의버퍼를덮어쓸수있음을생각할수있고당신은 EIP 가저장된전후의영역에 A 를가득채울수있을거다. 이러한사실에대해서생각을좀해보자. 버퍼를보낸후에 ( 버퍼의내용은 [MyVar][EBP][EIP][your code] -> 바로위그림을생각하면된다.), ESP 가당신의코드의시작지점을가리키게만든다면... 당신의코드로 EIP 가점프하게될것이고, 당신은프로그램을제어하게될것이다. Note : 스택에있는버퍼가오버플로우가발생했을때의용어는 "stack based overflow" 또는 "stack buffer overflow" 로사용된다. 당신이이전의스택프레임의끝을쓰려고노력할때도 stack overflow 라는 용어가사용된다. 이 2 가지를혼동하지마라그것들은전적으로다르다. 7.The debugger 스택의상태 ( 그리고레지스터들의값예를들면 instruction 포인터나스택포인터등등 ) 를보기위해서, 우리는그프로그램을디버거로후킹해야할필요가있다. 디버거로대상프로그램을후킹하면프로그램이 실행되었을때무엇이일어나는지볼수있다. ( 그리고특별하게프로그램이죽었을때같은상황 )
13 이러한목적을위한많은디버거들이있다. 필자는주로 Windbg 와 Immunity's Debugger 두가지를주로 사용한다. Let s use Windbg. Install Windbg (Full install) and register it as a post-mortem debugger using windbg -I. You can also disable the xxxx has encountered a problem and needs to close popup by setting the following registry key : HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug\Auto : set to 0 In order to avoid Windbg complaining about Symbol files not found, create a folder on your harddrive (let s say c:\windbgsymbols). Then, in Windbg, go to File Symbol File Path and enter the following string : SRV*C:\windbgsymbols* (do NOT put an empty line after this string! make sure this string is the only string in the symbol path field) If you want to use Immunity Debugger instead : get a copy here and install it. Open Immunity debugger, go to "Options" "Just in-time debugging" and click "Make Immunity Debugger just in-time debugger".
14 ** 디버거사용법은귀찮아서... ㅜㅜ ;; 좋다이제시작하자. Easy RM to MP3 을실행하고 crash.m3u 파일을다시오픈한다. 프로그램은다시 crash 를발생시킬것이다. 당신이만약팝업창을사용하지않게설정했다면 windbg 나 immunity debugger 는자동적으로튕겨나갈것이다. 팝업이떳다면 debug 버튼을누르고 debugger 가실행될것이다. Windbg : Immunity :
15 Immunity 디버거의 GUI 는똑같은정보를나타내지만, 좀더그래픽적인방법으로보여준다. 위쪽의좌측구석을보면 CPU view 창이존재하는데이것은어셈블리어로된명령어와그들의 opcode 를보여준다. ( 이윈도우는비어있는데 EIP 가현재 을가리키고있고그것이유효한주소가아니기때문이다. ) 우측상단의윈도우에서당신은레지스터들을볼수있다. 좌측아래에서 의메모리덤프를볼수있고우측하단에서당신은스택의내용을볼수있다. ( ESP 가가리키고있는위치의메모리내용을볼수있음 ) 어쨌든이두가지경우에서우리는 instruction 포인터가 ( hex 값으로 AAAA 를표현한것 ) 을 가지고있다는것을알수있다. A quick note before proceeding : 인텔 x86 에서는리틀엔디안방식으로주소가저장된다. 문자열 AAAA 는 AAAA 로보이지만, 만약에버퍼에 ABCD 가보내졌다면 EIP 는 (DCBA) 를가리킬 것이다. 단지 A 만을포함하는 m3u 파일때문에우리는 EIP 에정확하게값을써내기위한버퍼의크기를알수가없다. 다른말로하자면, 만약우리가구체적으로 EIP 를덮어쓰기한다면, 우리는사용가능한데이터를프로그램으로보내고 (BOF 를유발한다는말 ) 우리의 evil code(-_-;) 로점프하게만들수있는데이짓을하려면 ( ㅋㅋ의역입니다.) 버퍼나페이로드에서리턴주소를덮어쓸위치가정확히어디 ( 함수의리턴이되는시점에서 EIP 가되는곳 ) 인지알필요가있다. 이위치가종종 "offset" 으로나타난다. 8.Determining the buffer size to write exactly into EIP
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 informationDeok9_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 informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationNo 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 informationMicrosoft 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금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPoison 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 informationMicrosoft 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 informationMicrosoft 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 informationMicrosoft Word - Exploit writing tutorial part 1.doc
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에존재하는취약점 (http://packetstormsecurity.org/0907-exploits/)
More informationMicrosoft 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슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft 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 informationPowerPoint 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 information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft Word - Heap_Spray.doc
Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13
More informationINTRO 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 informationIDA 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본문서는 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<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목차 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 informationMicrosoft 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임베디드시스템설계강의자료 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금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationMicrosoft 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 informationMicrosoft PowerPoint - hy2-12.pptx
2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
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강의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 informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationPowerPoint 프레젠테이션
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 informationISP 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 informationMicrosoft PowerPoint - a8a.ppt [호환 모드]
이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register
More informationhlogin7
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 informationInstall stm32cubemx and st-link utility
STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft PowerPoint - 15-MARS
MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터
More information취약점분석보고서 [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 informationAPI 매뉴얼
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 informationChapter 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학습목차 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 informationC# 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 informationMicrosoft 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 informationMicrosoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]
Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationA 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 informationhow_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 informationMicrosoft 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버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationMicrosoft Word - PLC제어응용-2차시.doc
과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,
More informationThe_IDA_Pro_Book
The IDA Pro Book Hacking Group OVERTIME force (forceteam01@gmail.com) GETTING STARTED WITH IDA IDA New : Go : IDA Previous : IDA File File -> Open Processor type : Loading Segment and Loading Offset x86
More informationExploit 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<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 information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationChapter ...
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 informationMicrosoft PowerPoint - a5a.ppt [호환 모드]
5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음
More informationComputer Architecture
명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationPowerPoint 프레젠테이션
1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly
More informationK7VT2_QIG_v3
1......... 2 3..\ 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 " RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information<41736D6C6F D20B9AEBCADBEE7BDC42E687770>
IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.
More informationMicrosoft PowerPoint - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationCD-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 informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More informationMicrosoft 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 informationMicrosoft 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 informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More information제목
Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More information<4D F736F F F696E74202D206D61696E D F6E D20C7C1B7CEBCBCBCAD20B7CEB5F920C8C420B8DEB8F0B8AE20B9D B20B1B8C1B6C0CCC7D8>
프로세스로딩후메모리및 stack 구조이해 학습목표 실제프로그램이 CPU 에의해메모리에상주되었을때메모리구조에대하여숙지한다. 논리적스택에대한개념과작동원리를이해한다. 논리적스택구조에대하여자세히각부분별기능이무슨역할을하는지를파악한다. 메모리구조모습 (1) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 프로그램실행후메모리구조모습 (1)
More informationCKKeyPro 적용가이드
3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.
More information[ 마이크로프로세서 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 informationMicrosoft PowerPoint - a2.ppt [호환 모드]
마이크로컴퓨터의기본구조 2 장 x86 프로세서구조 ALU: 산술논리연산제어장치 (CU): 실행순서제어클럭 : 구성요소들의동작동기화 CPU + memory + I/O + bus 어셈블리언어 2 클럭 (Clock) CPU 와 Bus 동작은클럭에동기되어동작을한다. 메모리읽기사이클과대기상태 1 클럭사이클동안간단한동작을수행한다. 기계어명령어수행에적어도 1 클럭사이클이필요함
More information02.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<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 informationA 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 informationMicrosoft 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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationvi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
More informationMicrosoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]
System Programming Lab Week 1: Basic Skills for Practice Contents vi Editor 사용법 GCC 컴파일러사용법 Makefile 사용법 GDB 사용법 VI Editor Usage vi 모드 입력모드 : 실제문서를편집하는모드. 명령모드 : 키입력이바로명령이되는모드로서쓴내용을삭제하거나, 복사할때사용. ex 명령모드
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More information1.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 informationChapter 1
3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g
More informationLevel 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<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A
강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은
More informationReusing 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 informationDE1-SoC Board
실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically
More information6주차.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취약점분석보고서 [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