문제를 먼저 확인하고 x64인걸 확인 후, IDA 64로 까봤습니다.

파일을 확인해보면 다음과 같이 main 속에 있는 check 함수를 발견할 수 있습니다.

check 함수에서 처음에 if 문 안에 아무것도 없나 싶어서 넘어가려 했는데...

나중에서야 e() 함수를 발견하였습니다.


위에 저기 쳐져 있는 것 보이시죠.


옆에 있는 함수들이 보였는데, 여기에서 사용하였던 것이었습니다.

그러면 이제 저 함수로 차례차례 들어가 보면 다음과 같이 쭈욱 나옵니다.


마지막 함수는 a 함수이며, 각 함수에서는 a1이라는 char* 변수에 값을 비교하는 것을 볼 수 있습니다.

저 위에서 변수에 값을 비교하는 것을 보고, 각 순서대로 들어간 값이 무엇인지 알기위해 코드를 작성해보았습니다.


a1 = [0] * 19

a1[4] = 123 
a1[12] = 51 
a1[8] = 121 
a1[13] = 114
a1[3] = 71 
a1[11] = 118 
a1[5] = 51
a1[14] = 53 
a1[16] = 110
a1[10] = 51 
a1[18] = 125 
a1[6] = 97
a1[15] = 105 
a1[9] = 114 
a1[1] = 76
a1[7] = 53 
a1[17] = 103 
a1[2] = 65
#*a1 = 70
a1[0] = 70


string = ""

for a in a1:
    string += chr(a)

print("[+] String : %s" % string)

#[+] String : FLAG{3a5yr3v3r5ing}


+ Recent posts