ctf
-
fta level11 문제 풀이(bof)ctf/ftz 2021. 12. 27. 11:02
level11에는 attackme파일이 있고 그 소스 코드가 hint에 있다. 간단한 bof문제로 보인다. bof가 아니더라도 printf( str )을 보니 FSB도 발생할 것으로 보인다. 이 글에서는 bof로 먼저 풀어보겠다. 인자로 쉘코드를 넣어주고 그게 strcpy함수에서 str변수로 복사가 된다. 여기서 bof가 발생해 리턴 값을 바꿀 수 있고 이 리턴 값을 str변수 주소로 하거나 환경변수의 주소로 하면 될 것 같다. gdb로 분석해 봤을 때 str 변수는 ebp-264위치에 있다. 그러면 쉘코드(25바이트)+A(268-25바이트)+str의 주소 이렇게 인자로 넣어주면 될 것 같다. 그런데 문제가 있다. aslr보호기법이 걸려 있어서 실행할 때마다 주소가 달라진다. 그래서 str의 주소 보다는..
-
ftz level9 문제 풀이ctf/ftz 2021. 12. 23. 17:30
level9의 hint파일을 보니 c로 작성된 코드다. 버퍼 오버 플로우 취약점이 발생하는 것을 볼 수 있다. 실행시키고 10바이트 크기의 buf에 40바이트 입력받으면서 bof가 발생하는데 buf에 40바이트 입력받으면서 buf2의 내용을 "go"로 바꿔주면 문제가 해결된다. 일단 buf의 10바이트를 아무 문자로 채우고 buf2까지 얼마나 떨어졌는지 모르기 때문에 하나씩 추가하면서 go를 buf2에 넣다보면 ax16go일 때 Good Skill이 뜨면서 level10권한으로 쉘이 실행된다. 여기서 my-pass 명령어로 비밀번호를 확인하면 된다.
-
ftz level8 문제 풀이ctf/ftz 2021. 12. 23. 17:23
level8의 문제는 위와 같다. find 명령어를 잘 써서 용량 2700에 유저권한이 level9인 파일을 찾으면 될 것 같다. find의 -size 옵션을 쓰면 되고 용량의 단위는 1byte가 c로 표시되므로 "find / -size 2700c 2> /dev/null"이렇게 해주면 될 것이다. /etc/rc.d/found.txt가 의심스럽다 cat으로 한 번 보자 파일에는 위의 내용이 여러 줄 도배되어 있다. shadow파일에는 비밀번호가 있는데 $(해싱알고리즘id)$(해싱후비밀번호) 이렇게 비밀번호 정보가 있다. 1번의 경우에는 md5 해싱이다. 우리는 일반적인 방법으로 해싱을 역연산해서 비밀번호를 구하기 힘들다. 이때를 위해 john the ripper라는 툴이 있는데 이 툴을 이용하면 편하게 비..
-
ftz level7 문제 풀이ctf/ftz 2021. 12. 23. 16:58
level7로 로그인 후 hint를 보니 패스워드를 추론하는 문제가 나왔다. 실행해보니 위와 같이 바로 패스워드 입력을 받는다. 패스워드에 아무 값이나 넣어보니 cat /bin/wrong.txt가 실행됐나보다. 그런데 파일이 없다고 아무 것도 뜨지 않았다. 찾아보니 개인이 ftz를 실행해서 문제를 풀 경우 파일이 없다고 만들어줘야 한다. 파일 내용은 --_--_- --____- ---_-__ --__-_- 위와 같다. 이를 이진수로 보면 "1101101 1100001 1110100 1100101" 이렇게 표현 될 것이고 이를 십진수로 변환하면 "109 97 116 101" 위와 같이 되고 이를 아스키코드 표에 맞게 문자로 바꾸면 "mate" 이걸 입력해준다. 성공적으로 level8의 비밀번호를 알아낼 수..
-
ftz level5 문제 풀이ctf/ftz 2021. 12. 23. 16:38
위의 내용만 봐도 뭔가 level5는 레이스 컨디션을 이용한 문제인 것 같다. 레이스 컨디션을 이용하기 위해 생성되는 임시파일과 같은 이름의 파일을 만들고 여기에 다른 파일과 심볼릭 링크를 걸어 파일의 내용을 변경한다. 그러면 프로그램은 그 파일을 자기가 만든 것으로 착각하고 심볼릭 링크를 건 파일에 동작을 수행한다. 이렇게 심볼릭 링크 걸린 파일의 내용을 확인한다면 임시파일에 저장됐던 정보를 볼 수 있다. 일단 /tmp폴더로 와서 파일을 본다. /usr/bin/level5 실행 전후로 차이가 없는 것으로 보아 파일을 생성했다가 바로 지우는 것 같다. 그러면 여기에 passwd라는 파일을 만들어주고 ln -s 명령어를 이용해 passwd 파일에 level5.tmp를 심볼릭 링크를 걸어준다. 이제 이대로 ..
-
ftz level4 문제 풀이ctf/ftz 2021. 12. 23. 16:17
ftz level4에 로그인 하고 파일을 보니 hint에 위와 같이 나와있다. ls -al /etc/xinetd.d/를 해서 뭐가 있는지 보자 backdoor라는 서비스가 보인다 cat 명령어로 한 번 확인해보자 finger라는 이름의 서비스이고 level5 유저권한으로 /home/level4/tmp/backdoor파일을 실행시킨다. 그런데 tmp디렉토리 안에는 backdoor라는 파일이 없다. 우리가 직접 my-pass를 실행하는 파일을 만들면 실행될 것이다. 즉 이 finger라는 서비스에 접근하면 level5의 유저권한을 얻을 수 있고 my-pass명령어로 비밀번호를 알 수 있을 것이다. vim으로 위와 같은 코드를 작성하고 컴파일 해서 backdoor파일을 만든다. 이제 finger 서비스를 실행..