본문 바로가기

Pwnable

(39)
[ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level3 cobolt에 로그인하자마자 역시 실행 파일과 소스코드가 보인다. 소스 코드부터 보았다. [cobolt@localhost cobolt]$ cat goblin.c /* The Lord of the BOF : The Fellowship of the BOF - goblin - small buffer + stdin */ int main() { char buffer[16]; gets(buffer); printf("%s\n", buffer); } LEVEL 1, 2와는 다르게 gets를 이용해 입력을 받는다. gets도 strcpy와 같이 입력 받은 문자열의 길이를 확인하지 않아서 오버플로우 취약점이 존재하는 함수이다. [cobolt@localhost cobolt]$ ./goblin AAAAAAAAAAAAAAAAA..
[ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level2 로그인 하자마자 홈 디렉토리에 cobolt 실행파일과 cobolt.c 소스 파일이 보인다. 소스 파일을 먼저 확인해보았다. [gremlin@localhost gremlin]$ cat cobolt.c /* The Lord of the BOF : The Fellowship of the BOF - cobolt - small buffer */ int main(int argc, char *argv[]) { char buffer[16]; if(argc < 2){ printf("argv error\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } 이번에도 argv 값을 buffer에 복사하는데 strcpy 함수를 이용한다. 이번엔 버퍼가 16바이트..
[ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level1 LOB란 Lord Of Buffer overflow의 약자로, 1단계부터 20단계까지 있으며, 버퍼 오버플로우 관련 문제들을 모아놓은 것이라고 한다. 우선 시작하기 전에 root 계정으로 로그인 후 /etc/passwd에서 :%s/bash/bash2/를 입력해서 bash를 모두 bash2로 바꾸어주어야 한다. bash는 \xFF를 NULL로 인식하기 때문이라고 한다. 첫 단계의 id/pw 는 gate/gate이다. FTZ와 동일하게 my-pass 명령어가 존재하는데, 로그인 한 계정의 패스워드를 출력해주는 명령어라고 한다. 텔넷을 통해 로그인 한 뒤에 ls를 입력해보았다. 소스 파일 하나와 실행파일이 보인다. gremlin을 실행해보았다. argv 에러가 출력된다. 입력 값이 무언가 있어야 하는 것 같다..
[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 9 로그인하자마자 ls -al과 find / -group level9를 실행해보았다. 아래는 find의 결과이다. $ find / -group level9 2>/dev/null /proc/10693 /proc/10694 /proc/10694/fd /proc/10694/fd/0 /proc/10694/fd/1 /proc/10694/fd/2 /proc/10694/fd/255 /proc/10694/environ /proc/10694/status /proc/10694/cmdline /proc/10694/stat /proc/10694/statm /proc/10694/maps /proc/10694/mem /proc/10694/cwd /proc/10694/root /proc/10694/exe /proc/10694/moun..
[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 8 level8로 들어오자마자 어김없이 ls -al과 find / -group level8 2>/dev/null을 실행해보았다. ls -al은 별 문제 없어보이고, find의 결과 중에 /etc/rc.d/found.txt라는 것이 보인다. 해당 파일의 내용을 보니 아래의 내용이 36번 반복해서 출력되었다. level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524 어디서 많이 본 형태인데, 바로 /etc/passwd에 사용자들의 정보를 저장하는 형태와 같다. 하지만 /etc/passwd는 7개의 필드가 존재하는데, 위의 내용은 총 9개의 필드로 구성되어 있다. 실제 사용자의 패스워드를 저장하는 /etc/shadow 파일이 총 9개의 필..
[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 7 level6에선 접속하자마자 평소와 다른 화면에 적잖이 당황했는데, level7은 다시 쉘 하나만 나온다. 먼저 level7 디렉토리에서 ls -al을 실행해보았는데, 특별한 점은 없어 보인다. 그렇다면 level7 그룹의 파일을 찾아봐야겠다. /proc는 제끼고, level7 디렉토리도 이상없었기에 제끼면, /bin/level7 파일이 보인다. 권한을 한번 봐야겠다. SetUID가 설정되어 있고, level8 소유의 프로그램이다. 이걸 이용하면 되겠다 싶어서 일단 실행해보았다. 내 패스워드를 입력하라는 건가? 우선 level7의 패스워드를 입력했다. 패스워드 입력하라면서, 갑자기 cat 명령어의 에러가 출력된다. 뭔데요 그래서 이게? 갑자기 cat /bin/wrong.txt 을 왜 실행하는데?? 디버깅..
[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 6 level6에 로그인하면 여태까지와는 다르게 특별한 출력이 하나 나온다. 이게 뭐지..? 하다가 일단 하이텔로 접속해보았다. 한참 멈춰있다가 서버가 닫혔다며 연결이 끊긴다. 힌트를 다시 보면 텔넷 접속 메뉴에서 사용하던 해킹 기법이라고 나와있다. 실제로 텔넷으로 접속해야 하는게 아니고, 접속 요청을 보냄과 동시에 어떠한 동작을 추가로 실행해주어야 할 것 같다. 먼저 보기에 없는 4번을 입력해보았더니 "잘못 입력하셨습니다. 접속을 종료합니다." 라는 문구가 아주 잠깐 나온 후 프로그램이 종료되고, 접속한 level6 계정도 로그아웃된다. 혹시 세미콜론을 이용해서 명령어를 여러 개 보내야하나 싶어서 4;ls; 를 입력해보았는데 아무 소용 없었다. 입력이 1, 2, 3 인 경우가 아니면 종료하는 프로그램인 것..
[ProjectH4C] [Write-up] 해커스쿨 FTZ Level 5 Level5로 로그인한 후, 역시나 가장 먼저 ls -al과 find / -group level5 2>/dev/null을 실행해보았다. ls -al은 별거 없었고, find의 결과는 다음과 같았다. proc 디렉토리와 home 디렉토리를 제외하고 /usr/bin/level5가 존재한다. ls -al을 통해 확인해보았다. level6의 권한을 얻어서 비밀번호를 출력해내면 되는 것 같아서 일단 어떤 프로그램인지 알아보기 위해 실행시켜보았다. 아무일도 일어나지 않았다. 디버깅을 하려했더니 권한이 없어서 못한다고 하고 복사를 해오려했더니 그것도 권한이 없다고 나온다. 혹시 어떠한 파일을 만들어내는 프로그램인가 싶어서 find를 이용해 생성됐을만한 파일을 검색해보려 했지만 단서라고 할만한 것을 찾아내지 못했다. ..