전체 글 208

3DS CTF - Santa Walks into a bar (qr코드 파싱)

keyword : qr코드 파싱 qr코드 이미지들이 가득한 파일이 제공되며, 하나의 산타 이미지도 주어진다. 여기서 주어지는 산타의 ID.png파일이 있는데 그 파일을 읽으면 Now I have Xavier in 1b3ff9ed24dfa790c7a3d68902cbdaee라는 메시지가 온다. in 뒤에오는 숫자값은 다음 파일의 이름이다. 이제 쭉 읽으면 된다... 라고 생각하였으나 이상하게 중간에 핸드폰 qr코드로는 인식이 되지만, 파이썬 qrtools로는 제대로 파싱이 되지 않는 경우가 있어다. 해서 모든 qr코드에 대하여 조사를 하는 방법을 사용하였다. 12345678910111213141516171819import qrtools import os santa_message = ['Santa Claus'..

CTF | wargame 2017.03.07

3DS CTF - Warmup (간단한 reversing)

keyword : 간단한 reversing 리버싱 문제이다. 32비트 리눅스 프로그램인데 실행을 시키면 아무런 반응도 나타나지 않는다. gdb로 열어보면 flag라는 함수가 있는데, 구동이 되지 않는다. flag 함수 호출 매개변수는 pushl (eax), push 0x2a가 된다. 이제 flag 메소드를 보면 아래와 같다. flag메소드에서 하나씩 넘어왔을 때, 저 부분에서 jmp가 되는데 바로 위 구문을 보면 0x2a와 0x8(%ebp)를 비교한다. 즉, 넘어온 매개변수가 0x2a가 같아야 성공인데, 메소드를 보면 고정적으로 0x2a가 넘어오기 때문에 성공이 되지 않는다. 만약 성공을 하면 flag + 50위치로 넘어가게 되고, 여기서 부터 1문자씩 출력을 한다. putchr(0x33), 0x44 ...

CTF | wargame 2017.03.07

3DS CTF - Results does not matter (연산회로)

keyword : 연산회로 연산 회로 사진 한장이 주어진다. 각각 or, xor, not, and gate에 해당한다. 힌트로는 32bit라고 있으며 이에 맞게 소스코드를 작성하면 다음과 같다. 12345678910111213141516import hashlib a = 334453b = eval("0b1010001111100001000")c = 0x200 xor_1 = a ^ bi = 0 while True: or_1 = i|c xor_2 = or_1 ^ 318 if (xor_1 & xor_2) == 1337: print "3DS{"+hashlib.sha256(str(i)).hexdigest()+"}" break i += 1Colored by Color Scriptercs Answer : 3DS{d9a5..

CTF | wargame 2017.03.07

3DS CTF - AlienAudio? (오디오 스펙트럼 분석)

keyword : 오디오 스펙트럼 분석 mp3파일 하나가 주어진다. 파일 카빙등은 되지 않으며, 음악을 플레이하면 일정 간격으로 불편한 기계음이 들린다. 처음엔 모스 부호일지 모른다는 생각을 하였는데, 모스 부호라기에는 너무 기계음이 일정한 문제가 있었다. writeup을 보면 스펙트럼 분석을 하면 된다고 하는데 자세한 설명은 없어서 약간 해맸다. 오디오 파일의 수정이나 해킹대회에서 풀이에 주로 사용되는 audacity를 사용하였다. 기본적으로 오디오파일을 열면 위와 같이 나온다. 이제 스펙트로그램으로 설정을 변경한 후에 세부 설정을 변경하여야 한다. 스펙트로그램으로 변경한 후 오디오 파일의 분포를 보면 창에 꽉 차 있는 것을 볼 수 있다. 그 얘기는 현재 보이지 않는 영역에 무언가 숨겨져 있을 가능성이..

CTF | wargame 2017.03.07

3DS CTF -What The Hex (jpg파일 복구, 사진에서 문자열 추출 - teeseract)

keyword : jpg 파일 복구, 사진에서 문자열 추출 - tesseract 파일이 하나 던져지는데 1231312123.... 이런식으로 숫자로 구성되어 있다. 파일확장자가 raw인 점. forensic인 점을 감안해서 제공된 파일의 스트링값을 hex값으로 변환하여 보아야 한다는 것을 유추했다. 하지만 파일의 크기가 266MB로 파이썬에서 한번에 read를 하고 작업을 하려 하면 컴퓨터의 메모리가 부족해지는 현상이 자꾸 발생해서 메모리가 적게 드는 방법을 찾아야 했다. 일단 약 100MB정도를 해서 보았을 때 첫 부분이 다음과 같았다. 시작부분이 FIF인 점. 그 후에 ff db등 jpg의 시그니쳐가 있는 점을 보고 jpg파일일 수 있다는 점을 유추했다. 해서 jpg의 footer인 ff d9를 찾아..

CTF | wargame 2017.03.07

hackcenter / Broken Encryption 1 (CTR블록 암호, Crime Attack - 암호문 압축 길이에 따른 공격 기법)

keyword : ctr 블록 암호, 파이썬 소스코드 분석 We found this service running on enigma2017.hackcenter.com:32762. Unfortunately, the sensitive information such as the encryption key and the flag have all been deleted. Our cryptographic spies tell us it is still insecure. Can you steal the flag? 이전 문제와 유사한 문제이다. 단, 블록 사용 방식이 CTR이라는 것이다. 실제 문제에서 CTR이 적용된 것은 처음 보는 듯 하다. [ Counter mode Encryption ] [ Counter mode ..

CTF | wargame 2017.03.07

hackcenter / Broken Encryption 0 (ECB 블록 암호, 평문 변경 공격......)

keyword : ecb 블록 암호, 파이썬 소스코드 분석 Take a look at MI6's latest service, running on enigma2017.hackcenter.com:43589. It may use the secure AES algorithm, but there must be some way you can recover the flag... 12345678910111213141516171819202122232425262728293031323334353637root@nopdata:/home/iy/ctf# python ecb.py ************ MI6 Secure Encryption Service ************ [We're super secure] ________ ..

CTF | wargame 2017.03.07

hackcenter / Two Time Pad (동일한 key를 사용한 이미지 OTP)

My new encryption (two-time pad, under patent review) is twice as secure as one time pads. I am so certain about the security of my new scheme that I am releasing the encrypted versions of my two most secret pictures: Picture 1 and Picture 2 HINTS The image were encrypted with the same key K as such: encrypted_pixels[i] = pixels[i] XOR K[i]. 두 개의 bmp 파일이 주어진다. 하지만 열어보면 모두 볼 수 없다. 힌트로 중요한 단서가 나왔는..

CTF | wargame 2017.03.07

3DS CTF - Crypto Master? (socket 통신 형태의 crypto)

keyword : socket 통신 형태의 crypto url : 문제는 서버에 접속을 해야 하는 문제이다. 서버에 접속을 하면 먼저 'Hi! Are you my master?'를 서버에서 보내준다. 그 응답으로 'yes'를 보내면 다음과 같이 C -> W, F -> T, Z -> 0을 보내준다는 메시지가 오고, I를 받기 위해서는 무얼 보내야 하는가에 대한 질의가 온다. 이 값을 따져보면 아래와 같다. 알파벳 테이블에 0을 추가한 암호문이 나온다. M을 기준으로 대칭이 된다. 따라서 위처럼 소스코드를 작성하고 풀이를 하면 된다. 'I'를 받기 위해서는 Q를 보내면 되며 Q를 보내게 되면 'QYMFRUMYGFUHKTWQJRUHG' 문자열이 넘어오게 된다. 이 문자열을 위에서 작성한 소스에 적용을 시키면 ..

CTF | wargame 2017.03.06