🌱초급

[Bandit] Level 11 → Level 12

Bandit Level 11 풀이 과정을 설명합니다.

2분 읽기

문제

Level Goal

The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions

이번에도 password는 data.txt에 위치하고 있고, password가 알파벳 위치상으로 13번째 위치씩 rotation되어 있는 구조라고 합니다.


해결

image.png
  • ls -al 명령어를 통해 data.txt 파일을 확인할 수 있습니다.

image.png
  • file 명령어를 통해 data.txt 파일이 text 파일임을 확인할 수 있고, 이를 바로 읽어보도록 하겠습니다.

image.png
  • cat 명령어를 통해 data.txt 에 rot13된 문자열이 들어있음을 확인할 수 있습니다.

    • 사실 rot13은 암호화 기법이라고 하기는 그런데, 고전 암호 기법으로 소개가 되고 있습니다.

    • a는 1, b는 2... z는 26까지 매핑해둔 뒤, 13번자리씩 미루는 방법을 말합니다.

  • 이제는 너무 간단한 치환방법이기 때문에 리눅스 명령으로 간단하게 해결할 수 있습니다.

image.png
  • tr 명령어를 통해 문자열을 치환해볼 수 있습니다.

    • 대.소문자 모두 13만큼 이동한 위치의 알파벳으로 치환되므로 범위 지정 시, 대.소문자 모두 기입해야 하는 특징이 있습니다.

    • (A부터 Z까지)(N부터 Z, A부터 M까지)로 치환, (a부터 z까지)(n부터 z, a부터 m까지)로 치환합니다.


핵심

tr(translate) 명령어

  • 특정 문자를 치환하거나 삭제하는 명령어

  • tr [option] 문자열1 [문자열2] 형태로 사용

  • 문자열 범위 지정가능 '[]' '[]'

  • 예) 소문자를 대문자로 변경

    • tr a-z A-Z

    • tr '[:lower:]' '[:upper:]'

    • tr '[a-z]' '[A-Z]'

image.png

ROT-13 (=rot13)

  • 카이사르 암호의 일종으로 알파벳을 13글자씩 밀어서 만듦(치환) -> 키 값이 13

  • 온라인 게시판에서 퍼즐의 정답이나 등 미리보기를 원치 않는 내용을 암호화하는데 주로 이용

  • 암,복호화가 같은 유일한 방법 

  • 알파벳이 26글자이기 때문에 ROT13 암호화를 2번 적용할 경우 원래대로 돌아옴(평문)

  • tr 'A-Za-z' 'N-ZA-Mn-za-m' 등의 형태로 사용

카이사르 암호(Caesar Cipher, 시저 암호)

  • 암호학에서 다루는 간단한 치환 암호

  • 암호화하고자 하는 내용을 알파벳 별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식


댓글

이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!

댓글을 작성하려면 로그인하세요

로딩 중...
공유
sikk

sikk

Author

보안을 공부하는 개발자입니다. Web2/Web3 보안과 시스템 해킹에 관심이 많습니다.

뉴스레터 구독하기

새로운 포스트가 올라오면 이메일로 알려드려요!