본문 바로가기

GDB3

해커스쿨 F.T.Z Level 15 level 15 로그인 후 hint를 본다. level 14와 같은 코드지만 "int *check" 변수 check의 변수가 포인터로 쓰여있다. 이것은 변수 *check가 가리키는 주소에 0xdeadbeef가 들어있는지 봐야 한다. C 코드 분석은 level 14에서 했으므로 생략하고 gdb를 열어본다. main+3에서 0x38(56)byte만큼 공간을 확보하고 main+17에서 ebp-56의 주소를 eax에 넣은 뒤 fgets 함수를 call 한다. main+29에서 ebp-16의 주소를 eax에 넣고 그 결과를 main+32에서 0xdeadbeef와 비교한다. 이 사이에 *check 변수의 주소를 찾아 먼저 넣어주면 BOF가 일어나게 된다. 여기서 level 14와 같은 크기로 ebp-56에서 비교문.. 2020. 2. 26.
해커스쿨 F.T.Z Level 9 level 9에는 새로운 것들이 많이 나오고 이후부터는 GDB로 분석을 해야 한다. 그렇기에 Break Time을 가지고 level 9로 넘어왔다. level 9를 바로 보고 이해가 된다면 괜찮지만 안된다면 이전 포스트 Break Time을 보고 오는 것이 이해가 더 잘 된다. level 9에 로그인 후 hint를 본다. "/usr/bin/bof"를 이용해 level 10의 권한을 얻어야 한다. 일단 실행시켜보고 시작하자. bof 실행 후 아무거나 입력했다. 아무 반응이 없으므로 코드를 분석해야 한다. fgets 함수를 이용해 buf 변수에 40바이트 입력받을 수 있게 했다. 이때 buf의 크기인 10바이트를 초과해서 입력하면 버퍼 오버플로가 발생한다. 버퍼 오버플로 기초적인 설명 bof의 권한이 lev.. 2020. 2. 18.
해커스쿨 F.T.Z BOF(Buffer OverFlow), GDB 기초 level 9를 하기에 앞서 Break Time을 가져야겠다는 생각을 했다. 그 이유는 level 9에는 BOF(Buffer OverFlow)가 나오고 GDB를 통해 분석해야 하므로 간단한 설명과 정보를 주기 위함이다. BOF를 잘 이해하기 위해서는 메모리 구조와 스택 프레임을 이해해야 하는데 동빈나님의 유튜브를 참고하여 이해했다. 동빈나님의 좋은 강좌가 있어 소개하자면 해커스쿨 실습과 같은 시스템 해킹 강좌다. GDB를 통해 분석하기 위해서는 어셈블리언어를 알아야 한다. 어셈블리에 대해 간단히 설명한다. BOF(Buffer OverFlow) BOF(Buffer OverFlow)란 버퍼 오버플로라고 부르고 이는 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다. 컴퓨터 보안과 .. 2020. 2. 15.