#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 값 확인




+ Recent posts