문제를 먼저 확인하고 x64인걸 확인 후, IDA 64로 까봤습니다.
파일을 확인해보면 다음과 같이 main 속에 있는 check 함수를 발견할 수 있습니다.
check 함수에서 처음에 if 문 안에 아무것도 없나 싶어서 넘어가려 했는데...
나중에서야 e() 함수를 발견하였습니다.
위에 저기 쳐져 있는 것 보이시죠.
옆에 있는 함수들이 보였는데, 여기에서 사용하였던 것이었습니다.
그러면 이제 저 함수로 차례차례 들어가 보면 다음과 같이 쭈욱 나옵니다.
마지막 함수는 a 함수이며, 각 함수에서는 a1이라는 char* 변수에 값을 비교하는 것을 볼 수 있습니다.
저 위에서 변수에 값을 비교하는 것을 보고, 각 순서대로 들어간 값이 무엇인지 알기위해 코드를 작성해보았습니다.
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 32 |
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 |