본문 바로가기

wargame/ftz

(29)
ftz level18 FTZ (Free Training Zone) level18 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level18pw : why did you do it 1. cat hint를 사용하여 코드를 확인합니다. 2. 코드 분석1. 1byte string 의 이름에 100공간을 준다]2. Int (4byte) check을 선언한다.3. X=04. Int count = 0;While 문으로 들어가보면 상당히 많은 것들이 있다가장 중요하게 봐야할 것은1) If(check== 0xdeadbeef) 이다Check이 deadbeef와 같으면 shellout함수를 호출한다즉 check 영역을 deadbeef로 수정하여 shellout함수를 호출하게 해야한다. 두번째로 ..
FTZ level17 FTZ (Free Training Zone) level17 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level17pw : king poetic 1. cat hint를 사용하여 코드를 확인합니다. 분석을 해보면 16번과 동일한 방법이지만 16번은 쉘코드를 실행시키는 함수가 있고 그 함수의 주솟값을 스텍에 넣어주어 권한을 얻었지만 17번은 환경변수를 만들어 그 주솟값을 넣어주면 됩니다. 16번과 동일한 스텍구조이기 때문에 56-16=40 까지의 값을 채우고 환경변수가 있는 주솟값을 넣어주면 프로그램이 실행 되고 call포인터에 환경변수의 주솟값이 저장되어 마지막 코드에서 call를 호출할 때 환경변수를 호출하게 되어 권한을 획득할 수 있습니다. 이런 방식..
FTZ level16 FTZ (Free Training Zone) level16 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level16pw : about to cause mass 1. Cat hint를 사용하여 코드를 본다. 2. 코드를 분석한다. Int crap 은 crap이라는 이름의 변수 [4byte]를 만든다. Void(*call)()=printit; call이라는 포인터 함수에 printit의 주소를 넣는다 Char [20] char의 변수명에 20의 버퍼 공간을 만든다. Feget 함수를 이용하여 입력받는다 (stdin은 키보드 같은 표준입력 장치에서 입력을 받는 것 ) Call() 함수를 호출 한다. 3. 분석 Call이라는 함수 호출 이전에 printit의 ..
FTZ level15 FTZ (Free Training Zone) level15 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level15pw : guess what 1. cat hint를 확인하여 코드를 분석한다.14번과 비슷하게 보이지만 여기서 중요하게 봐야할 것은 포인터 입니다. *check라는 의미는 check이 주솟값을 따라 갔을 때 check에 있는 값을 의미합니다. 2. gdb로 분석여기서 가장 중요한 것은 cmp 로 비교할 떄 0xdeadbeef 와 비교를 하는 것은 [eax] 값입니다.그러므로 0xdeadbeef의 주솟값(포인터이기 때문에)을 입력하면 그 주솟값이 가리키고 있는 것이 0xdeadbeef 이면 쉘코드를 실행시킵니다. x/x 주어진 주솟값의 내용을..
FTZ level14 FTZ (Free Training Zone) level14 1. 환경 : window10 2. VM, Red Hat Linux 9.0, putty id : level14pw : what that nigga want? 1. Cat hint 를 통해 힌트를 확인합니다. Int형 crap 변수 하나 . int형check변수 하나 그다음 char형 buf[20]의 순 서로 Stack에 쌓인다. fget함수를 통해 buf를 45개의 갯수까지 입력 받는다. Check 변수안의 값이 0xdeadbeef와 같으면 level15의 쉘코드를 실행시킵니다. 2. gdb를 통해 stack 의 구조를 확인한다.If 로 비교할때를 gdb로 확인해보면 ebp에서 -16떨어진 곳과 0xdeadbeef를 비교한다.즉 check 스텍의..
buffer over flow 필독 자료 WOWHACKER님이 작성하신 bof 기본 개념 자료입니다. 저는 이 자료를 보고 bof를 공부했습니다. 정말 많은 도움이 되니 bof를 모르시는 분들은 꼭 !! 추천해 드립니다.
FTZ level13 FTZ (Free Training Zone) level13 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level13pw : have no clue 1. cat hint 를 사용하여 힌트를 확인합니다. 2. 코드를 분석해보면 long I =1234567 이 저장되어 있고Char형 buf[1024]가 저장되어있고 argc>1일 때 버퍼에 argv[1]가 버퍼에 복사됩니다. i가 0x1234567값이 아니면 경고를 띄우고 프로그램을 종료시킵니다. (0,11) 3. Gdb를 확인하여 stack구조를 확인합니다.분석을 해보면 스텍의 총 크기는 1048byte 이다. + ebp 4 = 1052 이다.리턴 어드레스를 덮어야 하지만 덮는 과정중에 i 를 침범한다. 그..
FTZ level12 FTZ (Free Training Zone) level12 1. 환경 : window102. VM, Red Hat Linux 9.0, putty id : level12pw : it is like this (stack bof 문제 입니다) 1. Cat hint 를 통해 힌트를 본다. 11번과 다른점은 일단 attackme라는 프로그램 안에서 buf에 저장될 값을 입력 받습니다. 또한 입력받는 함수 gets입니다(글자수 제한이 없게 입력받는 취약점은 동일) 2. gdb를 통하여 스텍 구조를 확인합니다. (1번과 구조는 동일) 3. 11번과 동일하게 환경변수를 만들어주고 주소를 출력해주는 파일을 만듭니다 (tmp파일에 만들었을 때는 재사용 가능 단,환경변수 이름이 같아야합니다)export (환경변수 이름) =..