일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- War Game
- ftz
- 두근두근 자료구조
- 파이썬
- SWiFT
- 큐
- Java
- 파일 시스템
- level13
- System
- c언어
- web
- 암호수학
- 백준
- LoB
- 시간복잡도
- 스택
- C
- Stack
- windosws wbcs
- ftz level13
- windosw 문자열
- 정렬 알고리즘
- 재귀
- 자료구조
- 미로 탐색 알고리즘
- HTML
- OSI
- pwnable.kr
- PHP
- Today
- Total
목록War Game (41)
나의 기록, 현진록
ftz level12 level13 setuid 다음은 hint의 내용이다. level11과 다른 점은 str 배열에 저장될 문자열은 실행 인자가 아닌 실행 후 gets로 입력 받는다. level11과 별 다른 점 없으니 크기는 0x108로 똑같다. 환경변수에 쉘코드를 등록하고 주소를 출력하는 코드를 작성한다. 페이로드 작성 level12는 level11과 작성 순서가 다르다. 실행 인자가 아니기 때문에 attackme를 실행시킨 후에 입력해야 한다. 파이프라인( | )을 이용하면 된다. 페이로드는 다음과 같다.
ftz level11 level12의 권한을 가진 파일 현재 level11 권한을 가진 지금도 실행할 수 있는 권한이 있다. hint의 내용이다. 버퍼 오버플로우 즉 버퍼를 넘치게 하는 문제이다. 실행 인자를 입력하면 str 배열에 저장되는데 strcpy는 입력한 그대로 복사를 하기 때문에 256 바이트 이상의 크기도 그대로 수용한다. setreuid(3092,3092) 3092 사용자 권한으로 바꾼다는 의미이다. 3092는 어떤 계정인지 알아보면 level12 계정이다. setreuid 함수로 level12 권한을 가지고 /bin/bash or /bin/sh을 실행하면 level12 계정을 유지할 수 있다. 가장 기본적인 버퍼 오버플로우 기법인 ret 주소를 쉘코드로 덮어 씌운다. ret까지의 거리를 ..
ftz level10 힌트의 내용이다. 공유 메모리와 관련된 함수에 대해 먼저 알아보자. http://wisetrue.tistory.com/109?category=745475 shmget(), shmat() 공유 메모리 함수를 사용하기 위해서 먼저 메모리 정보를 알아보자. 명령어는 ipcs key : 0x00001d6a -> 7530 bytes : 1028 perms : 666 힌트의 내용과 흡사한 공유 메모리이다. 그대로 코딩
ftz level9 힌트의 내용이다. 일단 실행시키면 버퍼 오버플로우 문제이다. 정답은 if 문에 있다. buf2 배열의 앞 2자리를 "go"로 채워지게 만들기 일단 배열을 메모리 주소와 연관지어 만들어보면 buf buf2 buf2 배열이 먼저 선언되었기 때문에 높은 주소를 가진다. buf 배열이 나중에 선언되었기 때문에 낮은 주소를 가진다. fgets 함수의 해석은 buf 배열에 크기 40만큼 표준 입력 스트림으로 입력 받는다는 의미이다. fgets는 배열의 크기와 상관 없이 함수 인자에 크기만큼 입력 받는다. 엔터를 누르기 전까지..... buf2를 먼저 채우고 buf2 배열 크기보다 많이 입력 받으면 buf 배열로 버퍼 오퍼플로우가 발생한다. 만약 0123456789를 입력 받으면 01 2 3 4 ..
ftz level8 힌트의 내용이다. find 명령어를 사용하자. -size는 용량을 나타낸다. 사이즈 단위 b : 블록단위c : bytek : kbytew : 2byte 워드 검색 내역의 파일을 하나하나 확인해 보았지만 원하는 정보가 아니었다. 다른 풀이를 참고해 보았더니 다른 사용자들은 내가 접속한 ftz와는 다른 2700 용량이라고 표시되어 있다. 2700으로 검색해 보았더니 txt 파일이 검색되었다. $1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps. 이 부분이 암호화된 비밀번호이다. 해독하면 apple 해독 과정은 추후 수정.
ftz level7 힌트의 내용이다. 일단 level7 파일을 실행시켜본다. 패스워드는 가까운 곳에 있다고 하는데 밑에 -과 _을 참고하자. -과 _는 2진수인 것 같고 그렇다면 _ : 0- : 1 1101101 | 1100001 | 1110100 | 1100101 로 바꿀 수 있다. 이제 10진수로.... 109 | 97 | 116 | 101 처음에 10997116101 또는 네 개의 수를 더한 값을 입력해 보았으나 오답이었다. 그러나 네 개의 수 중에 97을 보고 아스키코드 a가 떠올라서 아스키코드에 수로 비교했다. m | a | t | e mate
ftz level6 접속 후 화면이다. 타 level과 다르게 접속 후에도 입력 모드 상태에 있다. 아무 키를 눌러보았더니 ? 갑자기 접속이 끊겼다. 접속 후 입력 상태에서 Ctrl + C 했더니 입력 모드가 해제되었다. 기존의 파일에서 password 파일과 tn 파일이 있다. 먼저 힌트 내용을 보면 힌트의 내용은 접속할 때의 화면과 같은 내용이다 인포샵 bbs의 텔넷 접속 메뉴에서 Ctrl + C를 누를 경우 빠져 나올 수 있는 취약점이 있었다고 한다. password와 tn 파일의 정보를 보면 password 파일은 읽기 권한이 tn 파일은 실행 권한이 주어졌다. 먼저 password 파일을 확인한다.... tn 파일을 실행해 보았더니 접속 후 화면과 같다. 로그인 후 바로 실행되는 프로그램인 것 ..
ftz level5 힌트의 내용이다. level5 파일의 정보를 알아보자. 실행할 수 있는 권한이 있다. 이 프로그램을 실행하면 /tmp에 level5.tmp라는 이름의 임시파일을 생성한다. 실행하고 /tmp 디렉토리를 확인한다. level5.tmp 파일이 존재하지 않는다. 임시파일은 생성과 동시에 삭제된다고 한다. 그렇다면 level5.tmp가 생성되고 삭제되지 않게 덤프한다. 먼저 level5.tmp를 생성하고 저장한다. 생성 직후의 level5.tmp 파일의 용량은 0이다. level5를 실행시킨 후 level5.tmp 파일의 용량이 변경되었다. level5.tmp의 읽기 권한이 있다.
ftz level2 소스 코드를 해석하면 인자가 2개가 아닐 경우 Auto Digger의 버전과 첫번째 인자를 출력한다. cmd 배열에 "dig @" 문자열을 추가하고cmd 배열에 두번째 인자를 연결하고cmd 배열에 "version.bind choas txt" 문자열을 추가하고 system 함수에 cmd 배열을 넣는다. 여기서 system 함수는 그냥 인자의 내용을 그대로 명령한다고 생각한다. autiodig 파일을 이용하여 level4의 권한을 얻어야한다. autodig 파일은 level4 권한의 setuid 파일이다. 실행시키는 동안 잠깐 level4 권한을 얻을 수 있다. 그 잠깐의 시간 동안 /bin/bash와 my-pass 명령을 하면 비밀번호를 알 수 있을 것이다. 위에 hint 파일에서 mo..