문제를 먼저 확인하고 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}
'CTF > 2020_SarCTF' 카테고리의 다른 글
SarCTF2020 - Layout (Misc - Programming) (0) | 2020.02.17 |
---|---|
SarCTF2020 - Deep Dive (Misc - Programming) (0) | 2020.02.17 |
SarCTF2020 - Car for Sherlok (Web - Race Condition) (0) | 2020.02.17 |
SarCTF2020 - Some bot (Web - Command Injection) (0) | 2020.02.17 |