FTZ 10

FTZ level10 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level10/interesting to hack! 로그인을 하고 힌트를 봤습니다. 라고 합니다. 공유 메모리에 대해서 구글링을 해봤습니다. https://www.joinc.co.kr/w/Site/system_programing/IPC/SharedMemory 공유 메모리의 사용 #include #include int shmget(key_t key, int size, int shmflg) void *shmat( int shmid, const void *shmaddr, int shmflg ) int shmdt( const void *shmaddr) int shmctl(int shmid, int cmd, struct ..

WARGAME/FTZ 2022.05.03

FTZ level9 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level9/apple 로그인을 하고 힌트를 확인했더니 bof의 소스코드가 적혀있네요. /usr/bin/bof의 권한을 확인해보니 level 10으로 setuid bit가 걸려있습니다. 힌트에 나온 코드를 보면, buf2와 buf를 선언하고 stdin을 통해 입력을 40바이트만큼 받아 buf에 저장하는 것을 알 수 있습니다. 입력을 받고 나서 buf2와 "go"를 2번째 자리까지 비교합니다. 같다면 "Good Skill!"을 출력하고, setreuid를 통해서 RUID와 EUID를 3010으로 바꿔주고 쉘을 실행시킵니다. setreuid 함수는 아래 잘 설명되어있습니다. https://man7.org/linux/..

WARGAME/FTZ 2022.04.14

FTZ level8 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level8/break the world 로그인하고 힌트 확인해봅시다. 파일을 찾아야 합니다. 알려진 것은 용량이 2700이라는 것 밖에 없네요. find 명령어를 사용해서 찾아봅시다. -size 2700c를 이용하면 되겠네요. man을 통해 find를 찾아보니, 접미사 c를 통해 바이트 단위인것을 명시해줄 수 있다고 나와있습니다. 딱봐도 found.txt가 수상해보입니다. 한번 읽어보겠습니다. 여기서 두번째 필드가 암호화된 비밀번호의 값입니다. 뒤엔 수정날자나, 사용기간등이 나와있는데, 신경쓰실 필요 없습니다. 두번째 필드를 보면 $Hashid$Salt$Hash value 순으로 구성된 것을 볼 수 있습니다. ..

WARGAME/FTZ 2022.02.26

FTZ level7 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level7/come together 원래 저 아래처럼 문자열이 나와야 합니다. 하지만 /bin/wrong.txt가 없어서 원래 cat /bin/wrong.txt할 수 없다고 나옵니다. root/hackerschool로 따로 로그인을 해서 wrong.txt를 만들고 저 아래처럼 문자열을 입력해줬습니다. 아까 힌트에서 2진수를 10진수로 바꿀 수 있는가? 라고 물어봤는 데, 딱 봐도 저걸 10진수로 바꾸란 소리로 들리죠? 일단 -를 1, _를 0으로 두고 한번 이진수로 바꿔봅시다. 1101101 1100001 1110100 1100101네요. 10진수로 바꿔보면 109 97 116 101 네요. 안되네요. 혹시 모..

WARGAME/FTZ 2022.02.26

FTZ level6 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level6/what the hell 접속하자마자 이렇게 뜨네요. 몰라서 검색해봤는데, FTZ관련 내용밖에 없어서 위키백과를 찾아보니, 옛날 PC통신 서비스라고 하네요. 하이텔 접속해봅시다. 이러다가 갑자기 꺼지네요. 동작을 안하나 봅니다. 다시 키고나서, 프로그램을 혹시 끌 수 있을 까 싶어서 ctrl + c 눌러서 프로세스를 종료시키려 해봤습니다. 걍 나가지네요. 솔직히 아는 게 없어서 그런지 황당하네요.

WARGAME/FTZ 2022.02.26

FTZ level5 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level5/what is your name? 힌트 먼저 봅시다. /usr/bin/level5가 /tmp에 임시파일을 생성한다고 하네요. 실행시키고 /tmp를 확인해보겠습니다. 실행을 계속 시켜봐도 /tmp에는 임시파일이 생성되지 않네요. 임시파일이라 프로그램이 꺼지면서 임시파일도 삭제되는 것 같네요. 임시파일이 삭제되지 않게 하는 방법이 뭐가 있을까요? 한번 /usr/bin/level5의 퍼미션을 확인해봅시다. level6의 권한으로 SetUID가 설정되어있네요. 프로그램을 실행시켰을 때, 프로그램은 level6 퍼미션으로 /tmp에 level5.tmp라는 임시파일을 만들고, 삭제합니다. 만약 level5.tm..

WARGAME/FTZ 2022.02.24

FTZ level3 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level3/can you fly? 로그인하고 힌트 확인해보겠습니다. C언어로 짜여진 프로그램이네요. main함수에 argc, argv 파라미터가 있는 걸 확인할 수 있습니다. 여기서 argc는 argument counts로 파라미터의 개수를 의미합니다. argv는 arguments vector로 가변적인 개수의 문자열을 말합니다. CLI환경에서 프로그램을 실행시킬 때, 띄어쓰고 인수를 전달해주는 데, 그때 그 인수들이 문자열 형태로 argv에 전달됩니다. 전달인자가 없으면 argv[0]엔 항상 실행 경로가 들어가기 때문에 argc는 1이 되죠. 이 부분 먼저 보면, argc가 2가 아니라면 Auto Digger..

WARGAME/FTZ 2022.02.15

FTZ level2 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level2/hacker or cracker 로그인 먼저 하고 힌트 먼저 읽어봅시다. 쉘 명령 실행시킬 수 있다고 하니, level3로 setuid가 걸린 파일을 찾아봅시다. 파일 이름이 editor인거보니 이파일이 맞는 것 같네요. 한번 확인해봅시다. 그룹이 level2인 사람도 읽기와 실행권한이 있네요. 거기다 setuid가 level3로 걸려있는 것을 확인할 수 있네요. level2로 로그인했고 그룹이 level2니 실행할 수 있겠네요. 한번 실행시켜봅시다. 아까 힌트에서 명령어를 실행시킬 수 있다고 했는 데, vi에디터에서 쉘명령어 실행에 관한 내용을 검색해봤습니다. vi에디터에서 외부명령을 실행시키기 위..

WARGAME/FTZ 2022.02.12

FTZ level1 풀이

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. 계정/비번: level1/level1 먼저 로그인 하시고, 디렉토리에 뭐가 있는지 확인해봅시다. hint에 무슨 내용이 있는지 읽어봅시다. level2 권한으로 setuid가 걸린 파일을 찾으라고 하네요. training때 배운 find 명령어를 사용하면 될 것 같습니다. setuid/setgid/stickybit중 setuid만 걸린 것을 2진수 100으로 표현하고 8진수로 4로 표현되는 걸 잘 알고있다면 쉽게 풀릴 문제입니다. / 부터 user가 level2이면서 퍼미션이 setuid가 걸려있고 000이상의 파일을 찾아보면 /bin/ExecuteMe라는 파일을 찾을 수 있습니다. 접근권한이 없는 디렉토리들은 에러를 반환해..

WARGAME/FTZ 2022.02.12

FTZ training 1~10 정리

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다. FTZ training 계정/비번 1. trainer1/trainer1 2. trainer2/linuxer 3. trainer3/computer 4. trainer4/mungguta 5. trainer5/goodluck 6. trainer6/coffee 7. trainer7/to the top 8. trainer8/player 9. trainer9/programming 10. trainer10/best! ls : 'list segments'의 약자로 디렉토리들과 파일들을 보여주는 기본적인 명령어 ls -l : 파일 형태, 퍼미션, 크기등을 출력. ls -a : 숨긴 파일도 출력.(리눅스에선 파일 앞에 .을 숨긴 파일로 인식함..

WARGAME/FTZ 2022.02.10