보안을 그리다, 훈이

[Forensics] 써니나타스(SuNiNaTaS) 18번 문제 Write Up 본문

Security/Wargame

[Forensics] 써니나타스(SuNiNaTaS) 18번 문제 Write Up

HooNeee 2021. 11. 30. 20:21

 

써니나타스(SuNiNaTaS) Forensics 분야 문제 중 가장 솔버가 많은 18번 문제를 풀어보았다.

 

 

Game 18

86 71 57 107 89 88 107 103 97 88 77 103 89 83 66 110 98 50 57 107 73 71 82 104 101 83 52 103 86 71 104 108 73 69 70 49 100 71 104 76 90 88 107 103 97 88 77 103 86 109 86 121 101 86 90 108 99 110 108 85 98 50 53 110 86 71 57 117 90 48 100 49 99 109 107 104

suninatas.com

 

[SuNiNaTaS] Challenge 18

 

문제에 진입하자마자 숫자로 이루어진 암호가 주어졌다.

 

주어진 수들의 범위가 매우 익숙했고 단번에 아스키코드로 이루어졌다는 것을 알 수 있었다.

 

여기서 아스키코드 표를 살펴보자.

 

ASCii Code Table

 

문제에 주어진 수와 아스키코드를 대응해보니 숫자, 특수문자, 대소문자 알파벳으로 암호문이 구성된 것을 파악할 수 있었다.

 

또한, ASCii to Text의 결과 값이 base64로 인코딩되어 있다는 것을 확인하였다.

 

따라서, 주어진 수들을 입력하면 ASCii to Text 형태로 변환하고, 이 값을 base64로 디코딩하는 코드를 동시에 Python으로 구현하여 해결했다.

 

import base64
asc = list(map(int, input().split()))
asc = ''.join(chr(i) for i in asc)
print(base64.b64decode(asc))

 

코드를 간단히 분석해보면 아래와 같다.

 

 

1. 아스키코드로 이루어진 수들을 asc의 list 안에 각각 저장한다.

 

2. chr() 함수를 사용하여 ASCii to Text 형태로 변환하고, 각각의 값들을 join() 함수로 String화한다.

 

3. base64 디코딩을 위해 base64 모듈을 import하고 b64decode() 함수로 평문을 출력한다.

 

 

코드를 실행하면 아래와 같이 출력값에 AuthKey가 내포되어 있다.

 

 

Solve!

 

Comments