[ OverTheWire ] - Bandit(Level 1 - 10)

DPOS·2021년 6월 24일
3

OverTheWire

목록 보기
1/1
post-thumbnail

level0 - level 1

문제조건

  • 다음 단계 비밀번호 얻기
  • 리눅스의 아주 기초적인 명령어

SSH 접속

문제풀이 && 결과사진


ls -alF로 어떤 파일이 있는지 확인하고 숨김 파일을 제외한 유일한 파일인 readme파일을 cat readme를 통해 확인하면 플래그가 바로 나와버립니다.

level 1 - level 2

문제조건

  • 다음 단계 비밀번호 얻기
  • 우회의 시작

문제풀이 && 결과사진


ls -alF를 통해 파일을 확인해보면 "-" 이런 이상한 이름의 파일이 있습니다. 이 친구를 그냥 cat명령어로 열려고 시도하면 그저 옵션을 달기위한 대쉬로 보는지 제대로 열리지 않습니다. 따라서 이 친구가 파일명이라는 것을 확실히 알려주기 위해 경로를 사용하여 cat ./-을 해주면 파일이 열리고 플래그가 나옵니다.

level 2 - level 3

문제조건

  • 다음 단계 비밀번호 얻기
  • 특수문자, 메타문자의 본 표현

문제풀이 && 결과사진


ls -alF를 통해 파일을 확인해보면 "spaces in this filename"이라는 파일이 있습니다. cat명령어를 사용할 때, 단순 스페이스로 공백을 표시하면 "spaces와 in, this, filename이라는 이름을 가진 각 파일을 출력해라"라는 명령을 내리게 됩니다. 따라서 이게 파일을 구분하는 공백이 아닌 파일 이름이라는 것을 나타내주기 위해 공백 앞에 백슬래시( \ )를 넣어 "spaces in this filename"로 알아들을 수 있게 만들어줍니다.

level 3 - level 4

문제조건

  • 다음 단계 비밀번호 얻기
  • ls -a

문제풀이 && 결과사진


ls -alF를 통해 파일을 확인해보면 inhere라는 디렉토리가 있고, 들어가서 한번 더 파일을 확인해보면 .hidden이라는 파일이 있습니다. cat .hidden으로 내용을 확인하면 플래그를 얻을 수 있습니다. 이 문제의 경우엔 파일을 숨기려는 목적이었으나 ls의 옵션중 -a가 숨김파일을 표시하는 기능이 있어서 문제 없이 파일을 찾고 플래그를 얻을 수 있었습니다. alF에서 나머지 옵션은 각각 파일의 상세한 내용 표시와 파일의 속성(디렉토리, 실행파일, 소켓 등)을 특정기호를 추가해 표시해줍니다.

level 4 - level 5

문제조건

  • 다음 단계 비밀번호 얻기

문제풀이 && 결과사진


ls -alF를 통해 파일을 확인해보면 inhere라는 디렉토리가 있고, 들어가서 한번 더 파일을 확인해보면 -file00~9라는 파일들이 있습니다. 이것들의 내용을 하나하나 확인해보면 07번째 내용(플래그)를 제외하고 전부 깨져서 나오는 것을 확인 할 수 있습니다.

level 5 - level 6

문제조건

  • 다음 단계 비밀번호 얻기
  • find -size

문제풀이 && 결과사진


이번 문제의 경우에는 입장 전에 파일 크기가 1033byte라고 알려줬기 때문에 find ./ -size 1033c명령어를 사용하여 플래그가 있는 파일을 출력하고, cat ./inhere/maybeher07/.file2로 플래그를 출력해주면 됩니다.

level 6 - level 7

문제조건

  • 다음 단계 비밀번호 얻기
  • find -user -group - size
  • dev/null

문제풀이 && 결과사진


이번 문제의 경우에는 입장 전에 유저는 bandit7, 그룹은 bandit6, 파일 크기는 33byte라고 각각 알려줬기 때문에 find / -user bandit7 -group bandit6 -size 33c명령어를 사용하여 플래그가 있는 파일을 출력하려고하면 아무래도 루트디렉토리에서부터 탐색하여 접근이 불가한 많은 파일들이 함께 출력됩니다. 그렇게 때문에 find / -user bandit7 -group bandit6 -size 33c 2>dev/null로 표준 오류 출력을 걸러주면, 우리가 원하는 bandit7.password 파일이 나옵니다. 이제 이 친구를 출력하면 플래그 값이 나와줍니다.

level 7 - level 8

문제조건

  • 다음 단계 비밀번호 얻기
  • grep

문제풀이 && 결과사진


입장 전 millionth 단어 옆에 패스워드가 있다는 말이 있습니다. 이게 그냥 data.txt파일 안에 단어가 많아서가 아니라 진짜 millionth라는 단어 옆에 플래그가 있습니다. 그래서 grep "millionth" data.txt를 해주면 플래그 값을 얻을 수 있습니다.

level 8 - level 9

문제조건

  • 다음 단계 비밀번호 얻기
  • sort, uniq

문제풀이 && 결과사진


입장 전 패스워드는 한 번만 발생하는 텍스트 라인이라고 알려줍니다. 따라서 sort로 정렬 해주고, uniq -u로 중복되지 않은 라인을 출력하면 패스워드가 나와줍니다. 여기서 "uniq"는 중복된 내용의 행이 연속되면 그 중 하나의 행만 남기고 지우는 명령어 입니다. 그렇기 때문에 정렬을 해주는 것이고, -u 옵션은 한번도 중복되지 않은 라인을 출력해주기 때문에 이를 이용하여 sort data.txt | uniq -u를 실행하면 유일하게 중복되지 않는 행인 플래그 값을 출력해줍니다.

level 9 - level 10

문제조건

  • 다음 단계 비밀번호 얻기

문제풀이 && 결과사진


입장 전 패스워드는 "="뒤에 오는 사람이 읽을 수 있는 값이라고 알려줍니다. 일단 grep명령어를 사용하면 바이너리 파일이라고 알려준다. 이럴때 -a 옵션을 추가해주면 읽어 오는게 가능해집니다. 읽어오면 값이 너무 난무한데, 이는 입장 전에 "사람이 읽을 수 있다"는 힌트로 strings를 사용해 주면 됩니다.

strings data.txt | grep "===" 이렇게 입력해주면 쓸데없는 값이 최대한 배제하고 값을 출력할 수 있습니다. -a 옵션을 뺀 이유는 strings를 사용하면 구지 필요하지 않아서 뺐고, "="을 늘려준 이유는 위에서 말한 것과 같이 쓸데없는 값을 배제하기 위해 늘려줬습니다.

profile
본인 전공빼고 다 하는 사람

0개의 댓글