해킹 공부 54

해커스쿨 FTZ level12 - gets 취약점, 버퍼오버플로우(BOF)

id : level12 pw : it is like this 1. 파일 목록 확인(ls) 후 힌트 파일 내용 확인(cat hint) 이번에도 파일 목록에 hint 파일과 함께 attackme 파일이 보였다. hint 파일 내용을 보니 level11의 hint와 비슷한 코드가 나왔다. 이것도 level11처럼 attackme의 소스일 것으로 보인다. level11과의 차이점은 level11은 attackme를 실행하면 입력받은 argv배열 값을 strcpy함수를 이용해 str배열로 복사하는데, 이때 문자열의 길이를 검사하지 않는 strcpy함수의 취약점을 이용해 str배열을 넘치게 해 버퍼오버플로우를 발생시키는 것이었다면 level12는 gets함수를 통해 str 배열에 들어가는 입력값의 크기를 선언된 s..

해커스쿨 FTZ level11 - 환경변수, shellcode, BOF

id : level11 pw : what!@#$? 1. 파일 목록 확인(ls) 후 힌트 파일 내용 확인(cat hint) 소스 코드 내용을 간단히 살펴보았다. 여기서 strcpy함수가 버퍼오버플로우 공격을 가능하게 하는 취약점이다. 이 함수는 복사하는 문자열의 길이를 검사하지 않기 때문에 str로 복사되는 argv[1]의 크기가 str의 크기 256을 초과하는 것이 가능하고, 이것을 이용해 버퍼오버플로우 공격을 하는 것이다. 2. attackme 파일 내용 확인 위 파일 목록에서 눈에 띄는 것이 처음 보는 attackme 파일이다. 이것이 문제풀이의 핵심이 될 것이다. attackme 파일의 내용을 확인(cat attackme)해 보려고 했다. 이게 아닌가보다.. attackme를 실행해보았다.(./at..

FTZ 해커스쿨 level10 - 공유 메모리

id : level10 pw : interesting to hack! 1. 파일 목록 확인(ls) 후 힌트 파일 내용 확인(cat hint) 2. 힌트 내용 해석 두 사용자의 대화방이 공유메모리를 이용하여 만들어졌다고 한다. - 공유 메모리 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리 - 프로세스 간 통신(Inter-Process Communication, IPC) 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로 -> 공유 메모리는 IPC 방식 중 하나이다. key_t 값 : 공유 메모리에 접근 및 할당하기 위한 공유 메모리 번호 3. IPC 정보 확인(ipcs) ipcs : IPC 정보 출력 ipcs -m : 공유메모리 세그먼트 관련 정보만 출력 공유 메모..

FTZ 해커스쿨 level9 - 버퍼오버플로우(GDB 이용)

id : level9 pw : apple 1. 파일 목록 확인(ls) 후 힌트 파일 내용 확인(cat hint) 힌트에 나와있는 /usr/bin/bof의 소스를 살펴보면 아래와 같다. ↓ 더보기 #include #include #include main(){ char buf2[10]; //문자 배열 buf2 선언 char buf[10]; //문자 배열 buf 선언 printf("It can be overflow : "); fgets(buf,40,stdin); // 입력받은 값을 buf에 저장, 입력 가능 최대 사이즈 40 if ( strncmp(buf2, "go", 2) == 0 ) // buf2의 값 2개와 go 비교해서 같으면, { printf("Good Skill!\n"); setreuid( 3010..

FTZ 해커스쿨 level8 - 암호 해독(John the Ripper 이용)

id : level8 pw : break the world 1. 파일 목록 확인(ls) 후 hint 파일 내용 확인(cat hint) 2. 힌트 내용대로 용량이 2700인 파일을 찾아야 한다. find 명령을 이용해 정해진 크기의 파일을 찾아보았다. find / -size 2700c : 용량이 2700바이트인 파일을 찾기 2>/dev/null : 에러를 null로 출력(=출력하지 않음) -> FTZ 해커스쿨 level1 3번 참고(https://obinstory26.tistory.com/4) 출력된 파일 목록 중 가장 그럴듯 해 보이는 두 번째의 found.txt 파일을 확인해 보기로 했다. found.txt 파일이 있는 /etc/rc/d 디렉토리로 이동 후 파일 목록 확인 3. found.txt 파일 ..

FTZ 해커스쿨 level7 - 2진수 해독(아스키 코드)

id : level7 pw : come together 1. 파일 목록 확인 후 힌트 파일 내용 확인 2. /bin 디렉토리로 이동해 level7 파일이 있는지 확인 3. level7을 실행했더니 비밀번호를 입력하라고 나왔다. 틀린 비밀번호를 입력하자 wrong.txt라는 파일은 없다는 안내가 나온다. 이후 이런저런 방법을 시도했다. 상상력을 동원하고, 패스워드는 가까운 곳에 있다길래 근처 파일들을 열어보고, 파일크기가 12312?? 수상한데? level7이니까 숫자 7? 이진법으로 변환한 7? level8에 setuid가 걸려있으니까 8? 이진법으로 8? 등등... 다양한 방법을 시도했지만 비밀번호를 알아낼 수 없었다. 한동안 고민하다가 인터넷의 도움을 통해 해결하기로 했다. 그런데,,, root 권한..

FTZ 해커스쿨 level6 - 리눅스 시그널

id : level6 pw : what the hell 1. 로그인을 하자마자 힌트가 나왔다. enter를 입력하니 텔넷 접속 서비스 목록이 나왔다. 접속하고 싶은 bbs를 선택하라기에 아무거나 골라서 입력했는데, 모두 연결 시도 도중에 putty 자체가 종료되었다. 내 컴퓨터 상의 문제인 줄 알았는데, 알고 보니 이것이 문제 해결 과정의 일부였다. 해킹 방법에 앞서 힌트 내용 자체가 이해되지 않아 관련 정보를 찾아봤다. 대한민국 pc통신의 역사에 대해 알아보니 내용을 어느정도 이해할 수 있었다. 대한민국 pc통신의 역사를 참조한 hint 내용 해석 : 옛날 pc 통신 시절에 사용된 해킹 방법이다~ ↓ 더보기 - 하이텔 : 한국PC통신 주식회사에서 운영하던 PC통신 서비스, 이후 인포샵으로 명칭 변경 -..

FTZ 해커스쿨 level5 - 심볼릭 링크

id : level5 pw : what is your name? 1. 가장 먼저 파일 목록 확인, hint 파일 발견 후 내용 확인 2. /usr/bin으로 이동 해 level5 프로그램이 있는지, 있다면 프로그램에 대한 정보 확인 level6에게 setuid가 걸려있는 것 확인 프로그램 level5 실행해봄 아무 결과 출력되지 않음 3. 힌트 내용을 더 찾아보기 위해 cd/ tmp 명령어 입력해 tmp로 이동해 ls로 파일 목록을 확인했지만 level5.tmp라는 파일이 없다. 이번에도 파일을 직접 만드는 것일까? 아니었다. level5에서 문제 해결의 핵심은 바로 심볼릭 링크이다. 컴퓨팅에서 심볼릭 링크(symbolic link) 또는 기호화된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일..

FTZ 해커스쿨 level4 - backdoor파일, finger

id : level4 pw : suck my brain 1. 이번에도 힌트 파일을 찾아 내용확인부터 시작한다. /etc/xinetd.d/에 백도어를 심어놓았다고 하니 해당 경로로 이동해 확인해보았다. 2. 가장 먼저 눈에 띄는 backdoor파일. 내용을 확인해봤더니 위와 같은 내용이 출력됐다. 자세히 읽어보니 나머지 내용은 모르겠고, user가 level5인것, server가 /home/level4/tmp/backdoor에 존재한다는 것이 실마리인 것 같다. 우선 server위치로 이동해보았다. 3. 그런데 server위치에 backdoor파일이 없었다. 여기서부터 어떻게 해야 할지 몰랐다. 인터넷의 도움을 받아보니 직접 backdoor프로그램을 만드는데, my-pass명령을 실행하는 프로그램을 짜서 ..

FTZ 해커스쿨 level3 - 다중명령어

id : level3 pw : can you fly? 1. ls로 파일 목록을 보니 역시 힌트 파일 발견 2. cat hint로 내용을 확인하니 프로그램 autodig의 소스가 나온다. c언어인데... argc가 2가 아니면 버전정보와 어떤 것을 출력하고 종료되는 프로그램이다. 이것을 통해 argc가 2가 되면 뭔가 다른 결과(힌트?)가 나올 것을 예상할 수 있다. 힌트파일 마지막 내용은 동시에 여러 명령어 사용과 문자열 형태로 명령어를 전달하는것에 대해 나와있다. 우선 동시에 여러 명령어를 사용하는 것은 '다중명령어'이다. 다중명령어 : 하나의 라인에서 여러 명령어 실행 가능 ;는 모든 명령어 실행, &&는 앞에서 실패 발생 시 뒤 명령 실행하지 않음 다음으로 문자열 형태로 명령어를 전달하려면 따옴표 ..