본문 바로가기

CTF/Write-up

RC3 2016 CTF FLE

이번 문제는 희근이형이 추천해준 문제다


파일 크기가 작고 비교적 쉽다

argv로 인자를 받아서 flag랑 비교한다

비교해서 맞다면 gottem을 출력하는데

그 위에 보면 enc(dest)라고 함수가 하나있다


이렇게 생겻는데 XOR연산을한다

이걸 코딩하면


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
= [0x360x220x570x120x2A0x2E0x300x120x300x290x210x120x220x2D0x250x780x490x380x2B0x6A0x360x240x490x730x2B0x2E0x2F0x760x2A0x260x490x790x2B0x330x00]
= [0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x250x7E0x250x200x25]
 
 
print hex(0x36 ^ 0x64)
print hex(0x22 ^ 0x61)
print hex(0x57 ^ 0x64)
print hex(0x12 ^ 0x3f)
print hex(0x2A ^ 0x64)
print hex(0x2E ^ 0x61)
print hex(0x30 ^ 0x64)
print hex(0x12 ^ 0x3f)
 
for x in range(len(a)):
    if x % 4 == 0:
        print hex(a[x] ^ 0x64)
    elif x % 4 == 1:
        print hex(a[x] ^ 0x61)
    elif x % 4 == 2:
        print hex(a[x] ^ 0x64)
    elif x % 4 == 3:
        print hex(a[x] ^ 0x3f)
cs

이런식으로 코딩이 가능하다

엄청 쉽다


출력하면 이렇게 나온다

내가 찾던 플래그가 아니란다

여기서 충격을 받았는데

이 바이너리를 살펴보면 알 수 있듯이

더 이상 뭐 존재하는게 없다 파일크기도 작고 ㄷㄷㄷ

힌트를 받아서 풀었는데


파일 끝에 GALF가 있다 뒤집으면 FLAG이다


코딩해서 파일을 뒤집고 FLAG를 대신 .ELF로 바꾼다


이게 진짜 대단한게

뒤집어서 헤더를 바꾸고 실행하면 처음 64비트 elf에서 32비트 elf로 바뀐다

심지어 실행도된다 ㄷㄷㄷㄷ


이런식으로 된다 


A를 30개 입력한 이유는

처음에 4개 입력했는데 eax가 5로 설정되어있었다

1F는 31이므로 30개를 입력해줘야한다


여기서 eax에 밑에 값들이 들어있다


내가 입력한 문자열과 이값을 XOR한다 67 63까지 30만큼만


그리고 XOR한 값과 최종적으로 비교한다

그럼 다시 역으로 XOR한다


1
2
3
4
5
6
7
8
= [0x610x680x4A0x640x140x1A0x470x190x030x720x360x080x6C0x1B0x2E0x6A0x6C0x1A0x550x670x680x760x460x640x7B0x1D0x500x7F0x670x63]
= [0x330x2B0x790x490x260x2A0x760x2F0x2E0x2B0x730x490x240x360x6A0x2B0x380x490x780x250x2D0x220x120x210x290x300x120x300x2E0x2A]
result = ""
 
for x in range(len(a)):
    result += chr(a[x] ^ b[x])
 
print result
cs


이렇게 짜면


RC3-2016-YEAH-DATS-BETTER-BOII

진짜 플래그가 나온다


성공!

'CTF > Write-up' 카테고리의 다른 글

holyshield StudyScala  (0) 2016.12.19
RC3 CTF GoReverseMe  (0) 2016.12.04
f-secure reverse engineering challenge  (0) 2016.07.11
SHARIF CTF DMD android app  (0) 2016.02.08
SHARIF CTF dMd  (0) 2016.02.07