팀명 : 포~야호~ (그만큼 잘하고 싶으시다는 거지~)
활동 일자 : 2021.03.27 13시 40분 ~ 15시
4주차 활동 계획 : 유튜브 영상을 통한 C언어 기본 다지기(3), Bandit Level 3~5 문제 풀이
팀원 : 이서은, 이연지, 이혜지, 정효주
<bandit level 3~5>
bandit Level 3 -> Level 4
목표: inhere 디렉터리의 숨겨진 파일에 저장되어있는 암호 구하기
ls 명령어를 통해 파일목록을 알아낸다
cd 명령어를 통해 [inhere]로 경로 이동
ls -a를 통해 숨겨진 파일을 포함하여 디렉터리를 출력한다.
[.hidden]의 존재를 파악할 수 있다.
cat 명령어를 통해 [.hidden]을 읽는다.
bandit4 pw : pIwrPrtPN36QITSp3EQaw936yaFoFgAB
bandit Level 4 -> Level 5
목표 : inhere directory에 있는 only human-readable file을 찾아 비밀번호 알아내기
ls -al 명령어로 어떤 파일과 디렉터리가 있는지 확인해봤는데, 문제에서 inhere 디렉터리에 only human-readable 파일이 있다고 했으니까 일단 cd inhere로 inhere 디렉터리에 이동해보자.
그다음 다시 ls -al 명령어를 사용해 목록을 확인해보았다. -file라는 이름으로 시작하는 파일이 10개가 있다.
비밀번호를 알아내는 방법은 여러 가지가 있는데, 첫 번째는 그냥 -file00부터 -file09까지 하나하나씩 cat 명령어를 사용해 내용을 읽어오는 것이다. 잘 보면 모두 글자가 깨져서 나오는데, -file07은 사람이 읽을 수 있는 언어인 영어로 내용이 출력되는 것을 확인할 수 있다. 하지만 만약 파일이 10개가 아니라 100개, 1000개라면 일일이 cat 명령어를 사용할 수 없으니 더 편리한 방법을 사용해보았다.
file ./*
file은 현 디렉터리에서 데이터 형식을 알려주는 명령어다. 여기서 우리는 -file00부터 09까지 모든 파일에 대한 데이터 형식을 알고 싶기 때문에 file ./*라고 쳐주면 된다. (*가 모든 경로를 나타낸다) 그러면 -file07이 유일하게 ASCII text로 작성되었다는 것을 알 수 있다. 즉, 사람이 읽을 수 있는 언어로 작성하였다는 것이다.
file ./* | grep 'text'
또는 file, 그리고 grep을 사용해 알아내는 방법도 있는데, grep 사용법에 대해 아직 익숙하지 않아 이 방법은 검색을 통해 알아냈다.
bandit level 5 -> level 6
목표: 다음 속성을 가진 inhere 디렉터리의 하위 파일에 저장되어있는 암호 구하기
(사람이 읽을 수 있으며 1033바이트의 크기, 실행할 수 없음)
일단 ls 명령어로 디렉터리가 어떤 것들이 있는지 확인했다. 20개의 maybehere라는 이름으로 시작하는 디렉터리가 있다. 이 단계는 Level 4->5보다 좀 더 복잡하게 구성되어 있다. 힌트에서 파일의 사이즈가 1033 bytes라고 했으니 이 사이즈를 가지고 있는 파일을 명령어로 불러오면 된다.
find . -size 1033c
유일하게 maybehere07 디렉터리에 있는 .file2 파일이 1033bytes의 사이즈를 가지고 있다는 것을 알 수 있다.
cat 명령어로 .file2의 내용을 확인하면 패스워드를 알아낼 수 있다.
< C언어 >
자주 쓰이는 스트링 함수
- strlen
- strcpy
- strcmp
- strcat
- strchr
int strlen(const char *str);
strlen - Array의 길이를 리턴해줌
char* strcpy(char* dest, const char* src);
strcpy - 스트링을 복사
int strcmp(const char *leftStr, const char *rightStr)
strcmp - 두 개의 스트링을 비교
char *strcat(char *s1, const char *s2);
strcat - append처럼 s1이 끝나는 지점에 s2를 뒤에 연결시킴
char *strchr(const char *str, int c)
strchr - 특정 문자열을 찾았을 때 그 주소를(그 자리부터) 리턴해줌 ->문자열이 출력됨
마지막 영상인 '스트림 함수 실습'을 시간 관계상 하지 못했기 때문에 각자 실습을 진행해 오기로 하였다.
다음 주에는...
- Bandit 6->8
- 달고나 문서 공부하기
'3. Pwnable (포너블) > 2) 개념 정리' 카테고리의 다른 글
[2021.05.8] 6주차 : Bandit Level 10,11,12->13 | 달고나 문서 p.13 ~ p.27 (0) | 2021.05.08 |
---|---|
[2021.05.1] 5주차 : Bandit Level 6, 7, 8, 9 -> 10 | 달고나 문서 p.1 ~ p.12 (0) | 2021.05.01 |
[2021.03.20] 3주차 : C언어 기본 다지기(2), Bandit Level 0~2 (0) | 2021.03.20 |
[2021.03.13] 2주차 : C언어로 기본 다지기 (1) (0) | 2021.03.13 |
[2020.11.21] 4너블 4ever - 달고나 문서 70p ~ 84p(끝!) (0) | 2020.11.21 |