Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SuNiNaTas
- Text
- 문자열
- Python
- Network
- CTF
- HackCTF
- N0Named
- Web
- xcz.kr
- MySQL
- 써니나타스
- C
- 수학
- 백준
- wargame
- Forensics
- 사칙연산
- Database
- Web Hacking
- Incognito
- 인코그니토
- misc
- php
- 정렬
- cryptography
- Digital Forensics
- writeup
- 구현
- 그리디 알고리즘
Archives
- Today
- Total
보안을 그리다, 훈이
[Forensics] 써니나타스(SuNiNaTaS) 18번 문제 Write Up 본문
써니나타스(SuNiNaTaS) Forensics 분야 문제 중 가장 솔버가 많은 18번 문제를 풀어보았다.
문제에 진입하자마자 숫자로 이루어진 암호가 주어졌다.
주어진 수들의 범위가 매우 익숙했고 단번에 아스키코드로 이루어졌다는 것을 알 수 있었다.
여기서 아스키코드 표를 살펴보자.
문제에 주어진 수와 아스키코드를 대응해보니 숫자, 특수문자, 대소문자 알파벳으로 암호문이 구성된 것을 파악할 수 있었다.
또한, 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!
'Security > Wargame' 카테고리의 다른 글
[Forensics] 써니나타스(SuNiNaTaS) 19번 문제 Write Up (0) | 2021.12.01 |
---|---|
[Forensics] 써니나타스(SuNiNaTaS) 15번 문제 Write Up (0) | 2021.12.01 |
[MISC] 써니나타스(SuNiNaTaS) 17번 문제 Write Up (0) | 2021.11.30 |
[MISC] 써니나타스(SuNiNaTaS) 13번 문제 Write Up (0) | 2021.11.25 |
[MISC] 써니나타스(SuNiNaTaS) 12번 문제 Write Up (0) | 2021.11.22 |
Comments