반응형

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
= "\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"
= ""
key = ""
= 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

+ Recent posts