#About
One of our employees has locked himself out of his account. can you help 'john galt' recover his password? And no snooping around his emails you hear.
#Solution
[그림 1] - 문제 파일 확인
문제로부터 받은 파일이며, 아래에서 확인할 수 있듯 ELF 32bit 바이너리 파일이였다
[그림 2] - ELF 32-bit 확인
IDA로 디컴파일 한 후 아래와 같이 메인함수를 살펴 보았으나 별 다른 특징을 가지는 코드를 찾을 수 없었다
[그림 3] - 디컴파일을 통한 main 함수 확인
하지만 함수 목록 주변에 위에서 찾아 볼 수 있듯 printFlag라는 함수가 있었고 해당 함수를 이루는 코드는 아래와 같다
[그림 4] - printFlag 함수 확인
위 함수는 주어진 "z2vb7m223dX4v7wvb3rX0f7v|T@WO@"라는 스트링 값을 단순히 7과 xor 연산 및 rot13 과정을 거쳐 배열에 담기게 되며
그 후, 반복문을 통해 배열에 담긴 값의 순서를 뒤집는다.
# -*- coding:utf-8 -*-
import codecs
ciphertext = "z2vb7m223dX4v7wvb3rX0f7v|T@WO@"
plaintext = ''
arr = ''
for i in range(len(ciphertext)):
arr += chr(ord(ciphertext[i]) ^ 7)
arr = codecs.encode(arr, 'rot_13')
for i in range(len(arr)):
plaintext +=arr[len(arr) -i -1]
print "\nFLAG = {}".format(plaintext)
간단한 파이썬 스크립트이며 실행시 아래와 같이 FLAG 값을 확인할 수 있다
[그림 5] - FLAG 값 확인
'Wargame' 카테고리의 다른 글
[DISK] Root Me > Find the cat (0) | 2017.12.14 |
---|---|
[MEMORY] Root Me > Command & Control level 6 (0) | 2017.12.14 |
[MEMORY] Root Me > Command & Control level 5 (0) | 2017.12.13 |
[MEMORY] Root Me > Command & Control level 4 (0) | 2017.12.13 |
[MEMORY] Root Me > Command & Control level 3 (0) | 2017.12.13 |