목록해킹 (27)
ii4gsp
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/reBSB/btqARYnbsVh/zVfbMowR6qo5y288wXhtAk/img.png)
파일 실행을하면 콘솔창의 아주 간단한 프로그램이 실행된다. 키값을 입력하라는 문구가 뜨고 이것이 뜸으로써 임의의 키값을 넣었을때 다음과 같은 문구가 뜬다. 방법 1 올리디버거로 파일을 열어 main()함수를 열어 내려가다 보면 파일 실행시 나오던 문구가 보인다. 좀 더 내려가다보면 stricmp라는 문자열 비교 함수를 볼수있다. 문자열 비교를하고 문자열이 같을때 뜨는 문구와 문자열이 다를때 나타나는 문구가 보인다. 디버거에서 프로그램을 실행하여 임의의 값을 넣어주고 입력한 임의의 값이 어떤값과 비교하는지 알아낼수있다. 방법2 또 다른 방법으론 프로그램의 흐름을 바꿔주는 것이다. main()함수에서 조금 내려보면 다음과 같은 어셈블리 코드를 볼수있다. JNZ는 결과가 0이 아닐 때 점프하므로 결과가 0일때..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2GoUX/btqzOlJRBWX/c7k2BSVA53TEc9MsdR3jI0/img.png)
프로그램 실행 시 Segment에서 무슨 일이 일어날지 알아보자. 프로그램이 실행되어 프로세스가 메모리에 적재되고 메모리와 레지스터가 어떻게 동작하는지에 대해 알아보기위해 간단한 프로그램을 만들어 보자. [root@ftz root]# vi test.c 소스파일을 하나 만들어주고 사진에 보이는것과 같이 소스코드를 작성하였다. [root@ftz root]# gcc -o test test.c 해당 소스파일을 컴파일 시켜서 test라는 파일 하나를 생성하였다. [root@ftz root]# gdb test 디버깅하여 어셈블리코드와 메모리에 적재될 Logical address를 보기 위해 gdb를 실행한다. 위 사진은 test파일의 어셈블리 코드들이며 앞에 붙어 있는 주소는 Logical address이다. di..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c92SYE/btqzOWihFAK/HID178clIHiEecc7kXYM8k/img.png)
1.버퍼 오버플로우(Buffer Overflow)란? 버퍼 오버플로우(Buffer Overflow) 줄여서 BOF라고도 한다. 시스템 해킹의 대표적인 공격 방법 중 하나이며, 버퍼(Buffer)라는 것은 보통 데이터가 저장되는 메모리 공간을 일컫는데 단순히 메인 메모리만이 아닌 다른 하드웨어에서 사용하는 임시 저장 공간 역시 버퍼(Buffer)라고 부른다. 컴퓨터 시스템 내에서 프로그램이 사용하는 메모리 영역을 정해진 범위 밖까지 메모리가 넘치게하여 프로그램의 실행 흐름을 바꾸거나 특정 데이터를 변조하는 방식의 공격 방법을 의미한다. 버퍼 오버플로우(Buffer Overflow) 공격 기법을 이해하기 위해서는 무엇보다 컴퓨터에서 실행되는 프로세스의 구조와 자료 저장 방식, 함수 호출 과정 및 리턴 과정,..