[2024/bandit] bandit level9 -> level10 Write-up

2024. 11. 10. 19:23· bandit
목차
  1. 프롤로그
  2. 문제
  3. strings
  4. grep
  5. 정규표현식
  6. 1. 리터럴 문자
  7. 2. 메타 문자
  8. 3. 문자 클래스
  9. 정답
  10. 에필로그
728x90
반응형

프롤로그

bandit 문제풀이

저번 비밀번호는 4CKMh1JI91bUIZZPXDqGanal4xvAg0JM 이다.

 

문제

다음 레벨로 가는 비밀번호는 data.txt 인 파일에 있다. 그리고 사람이 읽을 수 있는 문자열이고, 몇개의 = 문자 뒤에 있다.

 

 

strings

바이너리 파일이나 이진 데이터 내에 포함된 사람이 읽을 수 있는 텍스트 문자열을 추출하는 데 사용된다. 일반적으로 바이너리 파일은 사람이 직접 읽기 어려운 형식으로 되어 있으므로, strings 명령어는 그 안에서 ASCII나 유니코드 문자열을 찾아 출력한다.

  • -n  : 최소 길이 맞추기
  • strings -n 8 program #8글자 이상 가져오기
  • - e : 특정 인코딩 
  • strings -e S binaryfile #UTF-16
  • - t : 특정 오프셋

 

 

grep

그랩은 계속 해서 나오는 거 같은데 그만큼 많이 중요하고 핵심이라서 그런 것 같다. 나도 이걸 많이 써보지를 않았다 보니까 계속 까먹는다 그냥. 까먹는다기 보다는 계속 새로운 속성들이 나오니까...이거 참 외우기로 힘들고 익숙해지는 방법밖에 없다.

파일이나 명령어의 출력에서 특정 패턴을 검색하고, 그 패턴이 포함된 줄을 출력하는 명령어인데

  • -i : 대소문자 구분 X
  • -r / -R : 재귀적 탐색
  • -l: 패턴이 포함된 파일 이름만 출력.
  • -n: 패턴이 포함된 줄 번호를 함께 출력.
  • -v : 패턴이 포함되지 않는 줄을 출력
  • -E : 확장된 정규 표현식을 사용한다. 웬만하면 이거 붙여라. 아래 있는 거 할 때 귀찮아진다.

이정도는 이전에서도 계속 알았고

grep [옵션] '검색 패턴' [파일명]

이렇게 쓴다는 것은 알고 있다.

이때, 검색패턴 부분에서 정규표현식을 통해서 더 강력하게 문자열들을 찾아낼 수 있다.

 

 

정규표현식

1. 리터럴 문자

pattern

있는 그대로 검색한다.

 

2. 메타 문자

.(점)

임의의 단일 문자를 의미한다.

b.t

라고 한다면, bit, bat, bot 등 저기 가운데에는 아무거나 한 글자 들어간다는 뜻인다.

 

^(캐럿)

시작을 나타낸다

^Hello

라고 한다면, Hello로 시작하는 단어들을 찾아낸다.

다만 이게 배열에 들어간다면 말이 좀 다르다.

[0-9]

이렇게 있으면 0~9까지를 의미하는 말이지만

[^0-9]

를 해버리면 숫자 빼고 라는 의미가 되어버린다

 

$(달러)

끝을 나태낸다.

World$

라고 한다면, World로 끝나는 단어들을 찾아낸다.

 

위에 두 개 합친다면, 

^Hello World$

한다면 딱 저렇게 시작하고 끝나는 단어를 찾아낼 것이다.

 

*(애스터리스크)

앞의 문자가 0번이상 반복된다는 의미

go*gle

이렇게 있으면 ggle, gogle, google, gooogle, gooooogle, gooooooooooooooogle 다 된다는 것이다. 그러니까, o가 있어도 그만, 없어도 그만이란 얘기

 

+ (플러스)

앞의 문자가 1번 이상 반복된다는 의미

go+gle

아까 전에랑 비슷한데 안 되는 건, ggle 이건 안 된다. o가 반드시 한 번은 있어야 하기 때문에 gogle 부터 가능하다.

 

?(물음표)

앞의 문자가 0번 또는 1번 있을 수도 있고~ 없을 수도 있다 라는 의미

goo?gle

이렇게 있으면 google 또는 gogle 만 가능.

있을수도 있고...없을수도 있고 라는 의미니까.

 

 

3. 문자 클래스

[] (대괄호)

여러 문자 중에 하나.

[abcdefg]
[a-g]

이중에 하나라는 의미.

 

{} (중괄호)

특정 횟수를 반복시킨다

a{3}
a{3, 5}

위에 건 a를 3번 반복한 aaa

아래건 a를3번 이상 5번 이하 반복한 aaa, aaaa, aaaaa전부 매칭된다.

 

 

풀이과정

일단 접속부터 하자

ssh bandit9@bandit.labs.overthewire.org -p 2220
4CKMh1JI91bUIZZPXDqGanal4xvAg0JM
ls
cat data.txt

이 중에서 몇 개의 = 이거 뒤에 있다고 했으니까 해당 부분을 찾아야 한다.

 

정규 표현식으로 몇 개의 = 이거 뒤라는 의미가 결국에는 =+ 를 입력하면 될 것이다. 이렇게 하면 =가 한 번 이상 반복된다는 의미니까.

grep "=+" data.txt

했더니 아무것도 안 나온다. 엄...

당연하다. 저기에는 읽을 수 없는 것들도 포함되니까.

 

아까 strings를 써서 읽을 수 있는 것들만 가져오고 | 파이프를 통해서, grep 을 통해 정규표현식으로 넣어줘야한다.

strings data.txt | grep "=+"

하면 아무것도 안 나온다. 이때 아까 위에서 -E 이거 붙이라고 하던 거 기억하는 가

strings data.txt | grep -E "=+"

확실히 차이가 난다. 대충 비밀번호 같이 생긴 게 저거인 거 보이는 가?

 

 

정답

비밀번호는 FGUW5ilLVJrxX9kMYMmlN4MgbpfMiqey 이다.

 

에필로그

https://overthewire.org/wargames/bandit/bandit10.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Level Goal The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters. Co

overthewire.org

100번째 글 달성하고, 이게 101번째 글이다.

하루만에 글 10개쓴 거 같다.

728x90
반응형
저작자표시 비영리 (새창열림)

'bandit' 카테고리의 다른 글

[2024/bandit] bandit level11 -> level12 Write-up  (1) 2024.11.18
[2024/bandit] bandit level10 -> level11 Write-up  (0) 2024.11.16
[2024/bandit] bandit level8 -> level9 Write-up  (0) 2024.11.10
[2024/bandit] bandit level7 -> level8 Write-up  (3) 2024.11.10
[2024/bandit] bandit level6 -> level7 Write-up  (0) 2024.11.10
  1. 프롤로그
  2. 문제
  3. strings
  4. grep
  5. 정규표현식
  6. 1. 리터럴 문자
  7. 2. 메타 문자
  8. 3. 문자 클래스
  9. 정답
  10. 에필로그
'bandit' 카테고리의 다른 글
  • [2024/bandit] bandit level11 -> level12 Write-up
  • [2024/bandit] bandit level10 -> level11 Write-up
  • [2024/bandit] bandit level8 -> level9 Write-up
  • [2024/bandit] bandit level7 -> level8 Write-up
성밍쟁
성밍쟁
성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[2024/bandit] bandit level9 -> level10 Write-up
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.