본문 바로가기

분류 전체보기

FTZ level 14 FTZ level14 hint 우선 gdb로 확인해보자 buf는 ebp-56부터 시작되고 check는 ebp-16부터 시작된다. → 40byte차이 코드는 단순히 check == 0xdeadbeef이면 되므로 40byte를 채워주고 0xdeadbeef를 부르면 된다. 더보기
FTZ level 13 FTZ level 13 hint 우선 i가 어디에 들어가는지 확인하기 위해 /tmp에 hint코드를 복사해 gdb로 확인한다. ebp에서부터 들어가므로 처음에 들어간 값이 0x1234567가 아니면 종료시킨다. 총 1048byte를 확보, ebp-12부터 I가 들어가므로 LOW | buffer(1024byte) | dummy(12byte) | I(4byte) | dummy(8byte) | HIGH 계획) A 1036개로 dummy까지 채우고 i적고 다시 B 8개로 채우고 RET주소에 쉘코드로 환경변수를 만들어 그 환경변수의 주소로 채운다. 환경 변수를 만들고 환경변수 주소 확인 더보기
FTZ level 12 FTZ level 12 hint hint코드를 /tmp에 옮기고 gdb로 확인해본다. 264byte를 확보한다. RET의 주소를 넉넉히 0xbfffe7c0부터 준다. 이전 문제는 인자를 코드 실행 시 받는다면 이번 문제는 실행하고 gets함수로 받는다는 게 다를 뿐 푸는 방법은 똑같다. 더보기
FTZ level 11 FTZ level 11 hint hint를 /tmp에 코드로 따로 만들고 gdb로 확인해보면 264byte를 확보하는 게 보인다. nop(121byte) + 쉘코드(25byte) + nop(122byte) + RET주소(4byte) RET주소는 넉넉히 0xbffffb6c로 한다. 더보기
FTZ level 10 FTZ level 10 hint +) 공유 메모리? 모든 프로세스는 자신의 업무를 수행하기 위해 필요한 자료를 저장하기 위한 메모리 공간을 가지게 된다. 시작시 혹은 실행 중에 데이터를 저장하고 사용하기 위한 메모리 공간을 커널에 요구하여 할당받아 사용하는데 이러한 메모리 공간은 기본적으로 메모리를 요청한 프로세스만이 접근 가능하다. 하지만 여러개의 프로세스가 특정 메모리 공간을 동시에 접근해야할 경우도 있는데 이러한 작업을 위해 공유 메모리가 있다. 하나의 메모리를 공유해서 접근하는 것이다. (http://www.joinc.co.kr/w/Site/system_programing/IPC/SharedMemory) 공유 메모리를 확인하고 접근하는 코드를 짠다. shmget은 커널에 공유 메모리 공간을 요청하.. 더보기
FTZ level 9 FTZ level 9 hint strncmp는 buf2의 2바이트와 go와 비교하여 같다면 /bin/bash로 넘어간다. 일단 buf와 buf2의 메모리주소차이를 알기위해 /tmp에 힌트를 C로 짜서 수정한다. 0x10바이트 만큼 차이가 난다. 더보기
FTZ level 8 FTZ level 8 hint +)find 옵션 중 size -size [+파일크기/-파일크기/파일크기][b/c/k/w] b : 블록단위(512kb), c : byte, k : kbyte, w : 2byte found.txt.라는 파일을 찾았다. 이 파일을 열어보니 shadow파일이 있다. 이거를 john the ripper툴을 이용하여 풀면 패스워드가 나온다. apple 더보기
FTZ level 7 FTZ level 7 hint 근데 패스워드 입력했을 때 wrong.txt파일이 없다고 뜬다. 원래는 있어야하는데 해당 가상머신의 문제라고 한다. wrong.txt.의 내용은 다음과 같다고 한다. 올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에... --_--_- --____- ---_-__ --__-_- 위에 있는 짝대기를 1이라하고 아래 짝대기를 0으로 하고 2진수를 10진수로 바꿨을 때 --_--_- = 109 --____- = 97 ---_-__ = 116 --__-_- = 101 이걸 그대로 level7실행시키고 입력했더니 틀렸다. 아스키코드로 64이후는 문자였던게 생각나서 아스키 코드로 변환해봤다. 109 = m 97 = a 116 = t 101 = e 더보기
FTZ level 6 FTZ level 6 6번은 로그인을 하는 도중에 hint가 뜬다. 여기서 엔터를 쳤더니 이런 화면이 떴다. 근데 뭘 치든 뭐 아무것도 되지않아 다시 처음 hint화면에서 Ctrl+C를 눌렀더니 level6의 쉘이 떴다. 더보기
FTZ level 5 FTZ level 5 hint hint를 참고하여 level5을 실행시키면 실제 tmp에는 level5.tmp파일이 없다. 임시파일이라 종료 전에 사라지는 것 같다. level5에는 SetUid가 걸려있다. level5.tmp가 삭제되기 직전에 이 파일을 가로채기위해 LOB를 풀며 사용한 심볼릭 링크를 사용해보자. /tmp에 아무 파일이나 만들고 그 파일에 level5.tmp라고 심볼릭 링크를 걸어주면 /usr/bin/level5가 실행될 때 level5.tmp에 쓰여진 패스워드가 아무 파일에 연결되고 level5.tmp는 지워져도 아무 파일이 남아있기에 level6의 권한을 가져올 수 있다. +)touch? touch명령어는 비어있는 파일을 생성하는 명령어이다. 사실 처음에 get이라는 파일에 심볼릭 .. 더보기