Google CTF 2020
보호되어 있는 글입니다.
2020.09.08
no image
해커스쿨 FTZ level10
level10 힌트를 확인하면 공유 메모리를 이용하여 대화를 하고 있다고 한다. 공유 메모리에서 메시지를 획득하는 코드는 구글링을 통해서 쉽게 찾을 수 있다. 키 값을 7530으로 바꿔준 후 진행했다. 프로그램을 실행하게 되면 대화 내용이 출력된다. 대화 내용을 보면 패스워드를 확인할 수 있다. what!@#$?
2020.08.27
no image
해커스쿨 FTZ level9
level9 힌트를 보면 /usr/bin/bof의 소스 코드가 존재한다. buf와 buf2가 존재하고, buf를 40글자 입력받는다. 그리고 buf2가 "go"일 경우, uid를 3010으로 설정한 후 쉘을 실행한다. 이때 주의해야 할 것은 buf가 10글자라는 것이다. 이를 통해 overflow 공격이 가능하다. /usr/bin/bof를 gdb로 분석한 내용이다. 여기서 주의해서 볼 내용은 다음과 같다. 0x0804844b : lea eax,[ebp-40] 0x08048457 : lea eax,[ebp-24] 이는 각각 buf와 buf2를 나타낸다. 이 둘 사이에는 16의 간격이 존재한다. 즉 buf에 16글자를 채우고 나면 그 다음부터는 buf2에 대입이 된다. /usr/bin/bof를 실행한 후 앞..
2020.08.27
no image
해커스쿨 FTZ level8
level8 힌트를 확인해보면 shadow 파일이 존재하는데, 파일의 이름은 알 수 없고, 파일의 용량이 2700이라는 것만 알 수 있다. b: 512-byte blocks c: bytes k: kilobytes (1024 bytes) w: 2-byte words find 명령의 size 옵션을 확인해보면 용량과 단위 [bckw]를 같이 표기해줘야 한다. 각 단위가 나타내는 바는 다음과 같다. 용량이 2700이니 바이트 단위일 것이라 생각하고 c를 사용해 파일을 찾았다. 여러 파일이 출력되었는데, shadow 파일은 txt 파일일 확률이 높다고 생각해 열어보았다. 그러니 level9의 shadow 파일을 확인할 수 있었다. level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:110..
2020.08.22
no image
해커스쿨 FTZ level7
level7 level7로 로그인한 후 힌트를 확인했다. /bin/level7을 실행한 후 임의의 password를 입력했다. 그러니 wrong.txt가 존재하지 않는다고 에러가 났다. 찾아보니 이는 해커스쿨 FTZ의 오류라고 해서 root로 로그인하여 해당 파일을 생성했다. Can't Password. Near the Password! --_--_- --____- ---_-__ --__-_- 그런 다음 동일하게 임의의 비밀번호를 입력해보니 정상적으로 파일의 내용이 떴다. 이제 이것을 해석해야 한다. 힌트를 보면 눈치챌 수 있는데, 이는 2진수를 변환한 것이다. -는 1, _는 0으로 변환하여 2진수를 10진수로 변환해보면 109 97 116 101가 된다. 하지만 이는 패스워드가 아니다. 다음으로는 아..
2020.08.22
no image
해커스쿨 FTZ level16
level6 level6으로 로그인하면 힌트가 뜬다. 또한 엔터를 입력하면 텔넷 접속 서비스가 뜨게 된다. 서비스를 종료하기 위해서 ctrl+c를 입력했지만 ctrl+c를 사용할 수 없다고 뜬다. * Ctrl-C (in older Unixes, DEL) sends an INT signal ("interrupt", SIGINT); by default, this causes the process to terminate. https://en.wikipedia.org/wiki/Signal_(IPC) putty를 다시 실행해 hint에서 ctrl+c로 프로세스를 중단하니 쉘 환경으로 돌아갈 수 있었다. 파일 리스트를 확인하니 password 파일이 존재했다. 파일 내용에서 level7의 비밀번호를 획득할 수 있었..
2020.08.20
no image
해커스쿨 FTZ level5
level5 힌트를 확인해보았다. /usr/bin/level5 프로그램이 /tmp에 level5.tmp 파일을 생성한다고 하여서 먼저 프로그램을 실행시킨 후 확인해보았다. 프로그램을 실행시킨 후 폴더를 확인해봤지만 파일이 존재하지 않았다. level5 프로그램은 임시 파일을 생성한 후, 곧바로 파일을 다시 삭제시키는 것 같았다. race.c와 create.c 프로그램을 작성하여 컴파일했다. race.c는 레이스 컨디션을 하는 코드이고, create.c는 /usr/bin/level5 프로그램을 무한으로 실행하는 코드이다. 이때 레이스 컨디션이란 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이다. 레이스 컨디션 코드는 구글링을 하여 찾아 작성했다. // race.c ..
2020.08.15
no image
해커스쿨 FTZ level4
level4 먼저 힌트를 확인했다. /etc/xinetd.d/에 백도어를 심어놓았다고 해서 해당 폴더로 이동했다. xinetd(extended Internet daemon)는 오픈 소스 슈퍼 서버 데몬으로서 많은 유닉스 계열 시스템에서 돌아가며 인터넷 기반 연결을 관리한다. 이것은 오래된 inetd의 대체로서 더 강력한 보안을 제공하며, 대부분의 현대 리눅스 배포판에서는 이것을 사용한다. 폴더의 파일 리스트를 확인하니 백도어가 존재했다. 백도어 파일을 확인해보니 finger 서비스가 등록되어 있었다. 이때 중요하게 볼 것은 user와 server이다. user는 서버 프로세스를 실행할 수 있는 사용자의 아이디를 나타내고, server는 해당 서비스를 실행할 데몬 프로그램의 위치를 나타낸다. 즉 해당 위치..
2020.08.08

Google CTF 2020

2020. 9. 8. 13:26

This is a protected article. Please enter the password.

level10

 

 힌트를 확인하면 공유 메모리를 이용하여 대화를 하고 있다고 한다.

 

 공유 메모리에서 메시지를 획득하는 코드는 구글링을 통해서 쉽게 찾을 수 있다. 키 값을 7530으로 바꿔준 후 진행했다. 

 

 프로그램을 실행하게 되면 대화 내용이 출력된다. 대화 내용을 보면 패스워드를 확인할 수 있다.

 

 

 what!@#$?

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level12  (0) 2020.09.17
해커스쿨 FTZ level11  (0) 2020.09.17
해커스쿨 FTZ level9  (0) 2020.08.27
해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level7  (0) 2020.08.22

level9

 

 힌트를 보면 /usr/bin/bof의 소스 코드가 존재한다. buf와 buf2가 존재하고, buf를 40글자 입력받는다. 그리고 buf2가 "go"일 경우, uid를 3010으로 설정한 후 쉘을 실행한다. 이때 주의해야 할 것은 buf가 10글자라는 것이다. 이를 통해 overflow 공격이 가능하다.

 

 /usr/bin/bof를 gdb로 분석한 내용이다. 여기서 주의해서 볼 내용은 다음과 같다. 

 

0x0804844b <main+43>:   lea    eax,[ebp-40]
0x08048457 <main+55>:   lea    eax,[ebp-24]

 

 이는 각각 buf와 buf2를 나타낸다. 이 둘 사이에는 16의 간격이 존재한다. 즉 buf에 16글자를 채우고 나면 그 다음부터는 buf2에 대입이 된다. 

 

 /usr/bin/bof를 실행한 후 앞에 임의의 16글자를 채우고 "go"를 17, 18번째 글자로 입력하게 되면 buf2가"go"가 된다. 그러면 level10 권한으로 쉘이 실행된다. 그 상태에서 my-pass 명령어를 사용하면 level10의 password가 출력된다. 

 

 

 interesting to hack!

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level11  (0) 2020.09.17
해커스쿨 FTZ level10  (0) 2020.08.27
해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20

level8

 

 힌트를 확인해보면 shadow 파일이 존재하는데, 파일의 이름은 알 수 없고, 파일의 용량이 2700이라는 것만 알 수 있다. 

 

b: 512-byte blocks
c: bytes
k: kilobytes (1024 bytes)
w: 2-byte words

 find 명령의 size 옵션을 확인해보면 용량과 단위 [bckw]를 같이 표기해줘야 한다. 각 단위가 나타내는 바는 다음과 같다. 용량이 2700이니 바이트 단위일 것이라 생각하고 c를 사용해 파일을 찾았다. 

 

 여러 파일이 출력되었는데, shadow 파일은 txt 파일일 확률이 높다고 생각해 열어보았다. 그러니 level9의 shadow 파일을 확인할 수 있었다. 

 

level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524

 

 shadow 파일 복호화는 john the ripper를 사용한다. kali에 기본적으로 깔려있기 때문에 그를 사용해 복호화했다. 

 

 pass 파일에 위에서 찾은 shadow의 내용을 넣은 뒤 john을 통해 복호화 했다. 

 

 

 apple

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level10  (0) 2020.08.27
해커스쿨 FTZ level9  (0) 2020.08.27
해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level5  (0) 2020.08.15

level7

 

 level7로 로그인한 후 힌트를 확인했다. 

 

 /bin/level7을 실행한 후 임의의 password를 입력했다. 그러니 wrong.txt가 존재하지 않는다고 에러가 났다. 

 

 찾아보니 이는 해커스쿨 FTZ의 오류라고 해서 root로 로그인하여 해당 파일을 생성했다. 

Can't Password. Near the Password!
--_--_- --____- ---_-__ --__-_-

 

 그런 다음 동일하게 임의의 비밀번호를 입력해보니 정상적으로 파일의 내용이 떴다. 

 

 이제 이것을 해석해야 한다. 힌트를 보면 눈치챌 수 있는데, 이는 2진수를 변환한 것이다. -는 1, _는 0으로 변환하여 2진수를 10진수로 변환해보면 109 97 116 101가 된다. 

 

 

 하지만 이는 패스워드가 아니다. 다음으로는 아스키 코드를 생각해보았다. 

 

아스키 코드 - 나무위키

UTF-8의 경우 ASCII 영역은 그대로 1바이트를 사용하기 때문에 호환이 된다. 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 BOM까지 없다면 그냥 ASCII 문서와 다를 게 없다. ��

namu.wiki

 

 109 97 116 101를 아스키 코드로 변환하면 mate가 된다. 이를 입력하니 level8의 패스워드를 얻을 수 있었다. 

 

 

 break the world

 

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level9  (0) 2020.08.27
해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08

level6

 

 level6으로 로그인하면 힌트가 뜬다. 

 

 또한 엔터를 입력하면 텔넷 접속 서비스가 뜨게 된다. 

 

 서비스를 종료하기 위해서 ctrl+c를 입력했지만 ctrl+c를 사용할 수 없다고 뜬다. 

 * Ctrl-C (in older Unixes, DEL) sends an INT signal ("interrupt", SIGINT); by default, this causes the process to terminate.

https://en.wikipedia.org/wiki/Signal_(IPC)

 

 putty를 다시 실행해 hint에서 ctrl+c로 프로세스를 중단하니 쉘 환경으로 돌아갈 수 있었다.

 

 파일 리스트를 확인하니 password 파일이 존재했다. 파일 내용에서 level7의 비밀번호를 획득할 수 있었다. 

 

 

 come together

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06

level5

 

 힌트를 확인해보았다. /usr/bin/level5 프로그램이 /tmp에 level5.tmp 파일을 생성한다고 하여서 먼저 프로그램을 실행시킨 후 확인해보았다.

 

 프로그램을 실행시킨 후 폴더를 확인해봤지만 파일이 존재하지 않았다. level5 프로그램은 임시 파일을 생성한 후, 곧바로 파일을 다시 삭제시키는 것 같았다. 

 

 

 race.c와 create.c 프로그램을 작성하여 컴파일했다. race.c는 레이스 컨디션을 하는 코드이고, create.c는 /usr/bin/level5 프로그램을 무한으로 실행하는 코드이다. 이때 레이스 컨디션이란 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이다. 레이스 컨디션 코드는 구글링을 하여 찾아 작성했다. 

 

// race.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
struct stat st;
FILE *fp;

if(argc != 3)
{
fprintf(stderr, "usage: %s file\n", argv[0]);
exit(EXIT_FAILURE);
}

if((fp = fopen(argv[1], "a")) == NULL)
{
fprintf(stderr, "Can't open");
exit(EXIT_FAILURE);
}

fprintf(fp, "%s\n", argv[2]);
fclose(fp);
fprintf(stderr, "Write OK\n");
exit(EXIT_SUCCESS);
}


// create.c
#include <stdio.h>
int main() {
while(1)
system("/usr/bin/level5");
}

 

 create 프로그램을 백그라운드로 실행한 후 레이스 컨디션 프로그램을 실행했다. 그리고 생성된 level5.tmp 파일을 확인해보니 password가 적혀있었다. 

 

 

what the hell

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01

level4

 

 먼저 힌트를 확인했다. /etc/xinetd.d/에 백도어를 심어놓았다고 해서 해당 폴더로 이동했다.

 

 xinetd(extended Internet daemon)는 오픈 소스 슈퍼 서버 데몬으로서 많은 유닉스 계열 시스템에서 돌아가며 인터넷 기반 연결을 관리한다. 이것은 오래된 inetd의 대체로서 더 강력한 보안을 제공하며, 대부분의 현대 리눅스 배포판에서는 이것을 사용한다.

 

 폴더의 파일 리스트를 확인하니 백도어가 존재했다. 백도어 파일을 확인해보니 finger 서비스가 등록되어 있었다. 이때 중요하게 볼 것은 user와 server이다. user는 서버 프로세스를 실행할 수 있는 사용자의 아이디를 나타내고, server는 해당 서비스를 실행할 데몬 프로그램의 위치를 나타낸다. 즉 해당 위치에 my-pass 명령어를 실행하는 프로그램을 작성하고, 서비스를 실행하게 되면 level5의 권한으로 my-pass 명령이 실행되게 된다. 

 

 /home/level4/tmp 폴더에 backdoor.c 프로그램을 작성했다. my-pass 명령을 실행하는 간단한 프로그램이다. 

 

 컴파일을 진행하여 backdoor 프로그램을 작성하였다. 

 

 이 다음부터는 구글링을 하여 문제를 풀었다. backdoor 서비스를 실행시키기 위해서는 finger을 구동시켜야 한다고 했다. 참고하여 finger을 실행시키니 password가 출력됐다. 

 

 

 

what is your name?

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01
해커스쿨 FTZ level1  (0) 2020.07.23