버퍼오버플로우(4)
-
[4] 환경변수를 이용한 버퍼 오버플로우 공격 ( 에그쉘)
게시글 [3] 에서 못다한 환경변수를 이용한 버퍼 오버 플로우 공격에 대해서 설명해드리겠습니다 해커스쿨 FTZ 문제들을 예로 들어서 어떤 식으로 환경변수를 사용하는지에 대해서 설명하겠습니다 환경변수를 사용한 공격에는 2가지 방법이 있습니다 1. 에그쉘을 이용해 환경변수를 생성하여 사용하기 2. 직접 환경변수를 선언해서 환경변수를 사용하기 1. 에그쉘을 이용해 환경변수를 생성하여 사용하기 ( /tmp/eggshell.c ) [level12@ftz tmp]$ cat eggshell.c #include #define DEFAULT_OFFSET 0 #define DEFAULT_BUFFER_SIZE 512 #define DEFAULT_EGG_SIZE 2048 #define NOP 0..
2017.06.05 -
[1] BufferOverflow Attack의 기초 ( 스택기반의 버퍼오버플로우 )
해당 게시글의 내용은 해커스쿨-도서관 에서 다운받은 파일을 기반으로 저의 공부를 위해 작성했습니다 " 해커 지망자들이 알아야 할 Buffer Overflow Attack의 기초 " By 달고나 님의 pdf의 사진과 글을 요약 정리했습니다 [1] 목적 Buffer Overflow 공격이 어떻게 이루어지는지를 설명하고 이러한 공격이 가능하게 되는 원리와 컴퓨터 시스템의 기본구조 설명 [2] 8086 Memory Architecture 8086 시스템의 기본적인 메모리 구조는 그림1 과 같다. 시스템은 " 커널 " 을 메모리에 적재시키고 " 가용메모리 "를 확보한다 운영체제는 하나의 프로세스를 실행시키면 그 프로세스를 Segment라는 단위로 묶어서 가용메모리 영역에 저장시킨다 구조는 그림2 ..
2017.06.01 -
FTZ level12 Buffer OverFlow
level9 에서 버퍼오버플로우를 이용해서 RET 메모리 공간을 변질시키는 공격법을 말한 적이 있습니다level12 에서는 RET 메모리공간의 값을 변질시켜서 level13쉘을 떨어지게 해보겠습니다 문제풀이 들어갑니다 힌트에서는 level13권한으로 setuid가 걸려있는 attackme 파일의 소스가 보입니다level13권한으로 setreuid을 실행하고 있고 gets() 함수로 문자열을 입력받습니다문자의 길이에 대한 제한이 없어서 오버플로우공격에 대해 취약점을 가지고 있음이 확인됩니다어떤식으로 공격을 해야할지 파악하려면 gdb로 해당 파일의 메모리 구조를 분석해야합니다 [level13 @ftz level13] gdb // gdb실행(gdb) file attackme // atta..
2017.05.23 -
FTZ level9 Buffer OverFlow
level9는 버퍼오버플로우에 관한 문제입니다 하나의 프로그램을 실행하면 해당 프로그램에서 사용하는 환경변수, 지역변수, 함수 들이 메모리에 쌓인다 그 메모리 구조를 스택(Stack)이라고 하고 스택은 특이한 특징을 가지고 있다 버퍼오버플로우는 데이터를 넘치게 함으로써 원하는 메모리 공간에 자신이 원하는 값을 위치시키게 하는 기법입니다 함수의 리턴주소(RET)를 침범하는 경우가 대표적입니다 해당 문제에서는 RET를 공격하지 않고 특정한 변수공간을 침범해서 데이터를 입력시키는 과정입니다 문제를 보면서 이해를 돕도록 하겠습니다 " /usr/bin/bof " 의 소스를 해석해보자면 [1] char형 변수 buf 와 buf2 가 선언되었습니다 [2] fgets( buf , 40 , stdin..
2017.05.23