본문 바로가기

2026 - 1

2주차 워게임 [forensics 18] 공부

이번 문제에서 추가로 더 볼건 없는 것 같고, 단순 디코딩 문제여서 문제에 쓰였던 아스키랑 Base64 정도? 다시 한번 훑고 가면 괜찮을 듯하다. 그리고 문제 풀면서 URL 디코딩? 이라는 것도 보았는데 이것도 알아보도록 하기로 했다.

 

Base64란??

 

사실 Base64... 가 정확히 뭔지 잘 몰랐다. 이거 조사하면서 제대로 알게된 것 같다ㅎ 보통 문제처럼 문자 덩어리가 나오면 '아, 아스키코드 표구나!' 하는 생각이 나면서 십진수를 아스키코드로 바꾸는데, 바로 읽히지 않았다... 그리고 문제 풀면서 바로 읽히지 않았을 때, 왜 Base64를 써야하는가? 라는 궁금증이 들었다. 그래서 찾아보았다!

 

Base64 는 "바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 (나무위키 참고)" 이라고 한다. 쉽게 말해서

[Base 64 인코딩]----------------------

문자열 --> Base 64

[Base 64 디코딩]----------------------

Base 64 --> 문자열

 

위의 코드블럭으로 보면 된다. 이 개념을 알고보면

 

1. 문자열을 Base64로 인코딩

2. 그것을 10진수로 변환

 

한 것이 문제의 숫자 덩어리라고 볼 수 있다.

 

※ 참고로 영어 대소문자가 골고루 섞여있으면 Base64이 높다는 팁도 있당

 

추가로 URL 인코딩에 대해서도 알아보았다.

 

URL 인코딩은 웹 주소(URL)에 사용할 수 없는 문자들을 안전하게 전달하기 위해 변환하는 방식이라고 한다. 웹 주소에는 전 세계적으로 약속된 규칙이 있는데, 웹주소에는 알파벳, 숫자, 그리고 몇몇 특수문자만 직접 사용할 수 있다는 규칙이다. 하지만 우리가 주소창에 한글을 치거나, 공백(Space), 혹은 &, ?, = 같은 예약어를 데이터로 보내고 싶을 때 문제가 생긴다. 그럴때 사용하는 것이 URL 인코딩이다.

 

브라우저는 '공백'이나 '한글'을 주소의 끝으로 오해하거나 제대로 인식하지 못하기 때문에 URL인코딩을 사용한다면 이러한 금지된 문자들이 "% + 16진수" 의 형태로 변환되게 된다. 이러면 오류없이 보낼 수 있다~

 

※ URL 인코딩은 보통 씨텦이나 워게임에서 공격 페이로드 전달, 데이터 숨기기 같은 역할로 자주 등장한다고 한다