이번 문제는 희근이형이 추천해준 문제다
파일 크기가 작고 비교적 쉽다
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 | a = [0x36, 0x22, 0x57, 0x12, 0x2A, 0x2E, 0x30, 0x12, 0x30, 0x29, 0x21, 0x12, 0x22, 0x2D, 0x25, 0x78, 0x49, 0x38, 0x2B, 0x6A, 0x36, 0x24, 0x49, 0x73, 0x2B, 0x2E, 0x2F, 0x76, 0x2A, 0x26, 0x49, 0x79, 0x2B, 0x33, 0x00] b = [0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25, 0x7E, 0x25, 0x20, 0x25] 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 | a = [0x61, 0x68, 0x4A, 0x64, 0x14, 0x1A, 0x47, 0x19, 0x03, 0x72, 0x36, 0x08, 0x6C, 0x1B, 0x2E, 0x6A, 0x6C, 0x1A, 0x55, 0x67, 0x68, 0x76, 0x46, 0x64, 0x7B, 0x1D, 0x50, 0x7F, 0x67, 0x63] b = [0x33, 0x2B, 0x79, 0x49, 0x26, 0x2A, 0x76, 0x2F, 0x2E, 0x2B, 0x73, 0x49, 0x24, 0x36, 0x6A, 0x2B, 0x38, 0x49, 0x78, 0x25, 0x2D, 0x22, 0x12, 0x21, 0x29, 0x30, 0x12, 0x30, 0x2E, 0x2A] 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 |