반응형
Swift Linux 용 컴파일된 바이너리이다.
여기서 한번 틀렸다고 하는데
여기는 일부러 틀리게 만든 곳이니 무시하고 지나간다.
이때 _TTSg5Vs5UInt8___TFSag9subscriptFSix는
문자열을 하나 가져오는 함수인것을 알 수 있다.
위 있는 sub_403510에 값을 넣고 연산을 통해
나온 값을 저장한 뒤 나중에 비교연산을 하는 것을 알 수 있다.
연산은 간단하게 a1의 하위 3바이트를 가지고 a2를 ROR하는게 끝이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | k = "\x00\x50\x43\x8a\x64\xed\xa6\xab\x93"\ "\xcc\xeb\xc2\x9a\xfa\x6a\xab\x93\xcc\xeb"\ "\x6a\xbb\x62\x33\xd1\xf5\xc2\x9a\xfa\x6a"\ "\xbb\x62\x33\xd1\xd7" t = "" key = "" s = 0 for i in range(33): t = s & 7 if t == 0: key += k[i+1] s = ord(k[i+1]) continue a1 = ord(k[i+1]) << t a2 = ord(k[i+1]) >> (8-t) a = (a1 | a2) & 0xff key+= chr(a) s = a print key | cs |
PCTF{5ur3_a5_5ur3_5w1ft_a5_5w1ft}
'CTF' 카테고리의 다른 글
Codegate2017 prequals Writeup (0) | 2017.02.15 |
---|---|
H3X0R - Stage1 (0) | 2017.01.08 |
CodeGate 2016 Junior BugBug (0) | 2016.03.20 |
CodeGate 2016 Junior JS_is_not_a_jail (0) | 2016.03.19 |
CodeGate 2016 Junior MICCheck (0) | 2016.03.19 |