일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 정보처리기사
- aws lambda
- File Upload
- 티스토리챌린지
- 오블완
- 정처기 필기
- AWS SSM
- metacodem
- 메타코드
- 정처기
- amazon s3 트리거
- 보안 그룹
- AWS CLI
- 블록체인
- 스마트컨트랙트
- Path Traversal
- web3
- web3 보안
- splunk db connect
- ELB
- Session Manager
- systems manager
- web security academy
- 메타코드M
- aws 트리거
- metacode
- 탈중앙화
- 정처기필기
- 스마트 컨트랙트
- web shell
- Today
- Total
min8282
Bandit Level 7 -> Level 8 본문
Level Goal
The password for the next level is stored in the file data.txt next to the word millionth
Commands you may need to solve this level
man, grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd
실책
처음에 해석하기를 data.txt에 백만 번째 단어 옆에 있는 키가 다음 레벨로 가는 비밀번호인 줄 알았다.
먼저 디렉토리에 어떤 파일이 있는지 확인했다. data.txt 파일 이외에는 별다르게 중요해 보이는 파일은 없었다.
cat data.txt로 파일을 확인해 봤는데 꽤 많은 내용이 있었고, 줄마다 단어와 비밀번호가 key-value 느낌으로 적혀있었다. 그래서 당연히 백만 번째 단어 옆에 있는 게 다음 레벨로 가는 비밀번호구나 싶어서 백만 번째 단어를 찾고 그 줄을 출력해 보려고 시도해 봤다.
head와 tail 명령어를 사용해 봤다. 기본적으로 head는 처음부터 10번째 줄까지, tail은 마지막 10줄이 출력된다.
간단하게 head와 tail을 공부해 봤다.
$ head -100 data.txt
이렇게 하면 data.txt 파일의 앞 100줄이 출력된다.
$ tail -100 data.txt
이렇게 하면 data.txt 파일의 마지막 100줄이 출력된다.
$ tail +100 data.txt
tail에서는 -(하이픈) 대신에 +를 사용하는 방법도 있다. 이렇게 하면 마지막 100번째 줄이 아닌 앞에서부터 100번째 줄까지 출력이 된다.
그럼 지금같이 파일 내용이 많을 때 3000번째 라인의 값만 보고 싶다. 근데 tail +3000 data.txt를 사용하게 되면 3000개의 라인이 전부 출력된다. 이때는 tail과 head 명령어를 응용해서 사용하면 된다.
$ tail +3000 data.txt | head -1
이렇게 하게 되면 3000번째 줄만 확인할 수 있다.
과연 출력된 결과가 정말 3000번째 라인이 맞을까?라는 의문이 들었다. 이때는 nl 명령어를 사용하면 줄 번호를 확인할 수 있다고 한다. nl 명령어는 각 줄의 앞에 줄번호를 붙여주는 작업을 진행한다.
보다시피 3000번째 줄이 맞는 것이 확인됐다.
그럼 이번에 문제를 풀기 위해서 백만 번째를 출력해 보겠다.
아무런 결과가 안 나온다. 처음에는 당황했지만 이게 아닌가 싶어서 tail만 사용해서 처음부터 백만 번째 줄까지 확인해 봤다.
이번에도 별다른 값이 출력된 게 없다. 내가 잘 못 한 건가 싶어서 data.txt의 전체 줄번호를 확인해 봤다.
98567까지 밖에 없다. 엥 이게 아닌가 문제를 다시 읽어봤다.
문제를 계속 들여다보니 millionth가 백만 번째가 아니라 단어 millionth 옆에 있는 게 로그인 비밀번호라고 한다..... 이래서 영어를 잘해야 한다... 힌트로 알려주는 명령어에도 head와 tail도 없었던걸 지금에서야 확인했다. ㅋㅅㅋ
해결
그럼 millionth가 있는 줄을 출력하면 된다. 텍스트 파일에서 내가 원하는 문자가 들어간 줄을 확인하는 방법은 grep 명령어를 사용하는 것이다.
grep '문자' [파일명]을 사용하면 문자가 있는 줄을 모두 출력해 준다. 예를 하나 보겠다.
$ grep 'apple' text.txt
이렇게 하면 text라는 파일 안에 apple과 일치하는 줄을 필터링해서 모두 출력해 준다.
이걸 사용해서 확인해 보면?
위와 같이 millionth로 필터링된 라인을 확인할 수 있다.
레벨 8에 로그인하는 비밀번호는 TESKZC0XvTetK0S9xNwm25STk5iWrBvP
다시 보면 정말 쉬운 문제지만 해결하는데 은근 고생했다. 그래도 하나씩 알아가는 단계라 생각하고 정진하겠다. 정. 진.
'Wargame > Bandit' 카테고리의 다른 글
Bandit Level 8 -> Level 9 (0) | 2024.05.13 |
---|---|
Bandit Level 6 -> Level 7 (0) | 2024.04.11 |
Bandit Level 5 -> Level 6 (1) | 2024.04.11 |
Bandit Level 4 -> Level 5 (1) | 2024.04.11 |
Bandit Level 3 -> Level 4 (0) | 2024.04.11 |