CTF | wargame 130

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

kisa - 해킹 공격 흔적 찾기

kisa - 해킹 공격 흔적 찾기 포렌식 문제이다. 디스크 파일을 분석해서 root 계정의 비밀번호를 획득해야 한다고 한다. 제공되는 파일의 확장자는 .img이지만, 시그니쳐를 확인해보면 1F 8B 08로 gz파일이다. 따라서 gz압축으로 압축을 풀면 디스크 이미지를 획득할 수 있다. UFS 파일 시스템이며 FreeBSD이다. passwd를 보고 계정 root비밀번호를 획득 해보려 하였으나, 실패하였고, shadow파일은 존재하지 않았다. 다른 history도 찾을 수 없었다. 그 중 etc경로에 pwd.db, spwd.db가 있었는데 이는 각각 사용자 정보가 저장되는 파일이다. pwd.db에는 계정 정보가, spwd.db에는 비밀번호가 적혀 있다고 한다. 위 사진은 spwd.db 파일의 일부를 가져온 ..

CTF | wargame 2016.12.29

codegate 2016 - eocnd

codegate 2016 - eocnd write up https://zzoru.com/wordpress/?p=15를 참고하였음 문제는 misc분야인데 엄청나게 큰 데이터의 파일이 제공된다. 압축된 파일이 약 2.7GB, 압축을 풀면 약 3.7GB정도? 힌트가 2개의 영상으로 주어진다. 1번 힌트는 Radio head라는 그룹의 Creep이라는 유투브 영상이며, 두번째는 자동차의 무선 키를 해킹하여 공격하는 영상이다. 여기서 도출할 수 있는 내용은 무선 네트워킹과 관련 되어 있다는 것이며 문제 풀이를 위해 GNU Radio를 이용하면 된다. (실제 풀 당시 여기까진 왔던거 같은데...) 하지만 문제 파일을 보면 그냥 쌩 바이너리라서 어떻게 해야 할지 답이 나오지 않았다. write up을 보니 제공된 바..

CTF | wargame 2016.12.29

Hack The Vote 16 - topkek (Crypto, 2-10 진법)

TOPKEK 문제는 위처럼 되어 있고, KEK과 TOP이 나열되어 있는 텍스트 파일이 제공된다. KEK과 TOP이 반복적으로 나열되어 있어서 무슨 암호인지 알아채지 못했는데 알고 보니 KEK과 TOP 뒤에 붙어있는 느낌표를 가지고 판단을 하는 문제였다.각각 KEK이 앞에 붙은경우 느낌표의 갯수대로 0을, TOP이 붙으면 1을 붙여서 출력을 해 주면 된다. writeup을 보면 비슷하지만 다양한 방법으로 소스코드를 작성하는데 아래의 소스코드가 가장 간결했던것 같다. import libnumf=open('kek.43319559636b94db1c945834340b65d68f90b6ecbb70925f7b24f6efc5c2524e.txt','rb')data=f.read()f.close() data_split = ..

CTF | wargame 2016.11.12

Hack The Vote 16 - warp_speed (jpg 파일 변환)

완전한 풀이는 아니지만 일단 풀었기에 작성한다.트럼프 선거활동에 관한 뭐 영어 문장이 있고 사진 한장이 주어진다.사진은 jpg로 제공된다. 사진을 보면 느껴지는게 픽셀 단위로 밀어 놓은것이 보인다.하지만 그냥 줄 길이로 맞추어 보았는데 전혀 맞지 않았다. 해서, 뭐 카빙을 해야 하나 싶어서 hex바이너리를 보았는데 아래와 같은 문장이 나온다.I am a square. Anyone who tells you otherwise is a LIAR!대강 풀이를 해 보면, 문제의 사진 파일은 square, 즉 정사각형 이라는 의미이다.문제 파일의 픽셀 수를 보면 1000x250이 된다. 이를 정사각형으로 바꾸려면 500x500로 바꾸어 주면 된다. 하지만 약간의 문제가 있다정확히 밀린 것이 아니라 줄이 하나씩 넘어..

CTF | wargame 2016.11.11

POX16 본선 - watch out (난독화 해제, WScript.Shell)

watch out (POX 2016 본선 - analysis) 본선 문제 중 analysis라는 문제가 있었는데 백업본을 받아서 한번 풀어 보았다. 문제는 바이너리 파일 하나가 주어지고 다음과 같다. 주어진 파일을 모두 분석하여 키값이 숨겨진 URL을 찾으시오 바이너리 파일을 HxD로 열어보면 다음과 같다. 그냥 보았을 때 익숙한 시그니쳐가 아니다. 문제를 풀 때 알 수 없는 바이너리 파일이 나오면 1. 시그니쳐를 구글링 해본다 (00 ~ 04 또는 00 ~ 08까지) -> 시그니쳐가 나오면 그에 상응하는 변환, 실행, 해제 방법이 있기 때문에 무조건 먼저 해 본다. 2. 파일 카빙을 해 본다. -> 문제에 의도적으로 다른 파일의 바이너리를 숨겨놓기 때문에 이 방법도 시도 해 본다. 보통 위 두가지 방법..

CTF | wargame 2016.11.11

POX14 - Crypto-1 (파이썬 디컴파일, CBC블록암호, 소스 재정렬)

이번에 pox 준비를 하는데 좀 도우라고 해서 crypto 문제를 한번 봤다. 14년도 본선 암호 문제이다. ● 문제 확인 주 파일이름은 I_Love_SEED.py이며 위처럼 암호문이 txt 파일로 제공된다. 문제 소스코드는 다음과 같다. #!/usr/bin/python from SEED_only_enc import * import random s = SEED() keyn = random.randint(0,65536) key = str(keyn).zfill(16) data = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX k = s.SeedRoundKey(key) encData = s.cbc_encrypt(data,k) print "encData : ",en..

CTF | wargame 2016.10.10

TWCTF16 - glance (png 픽셀 조정, gif 이미지 추출)

galnce 문제는 gif파일이 주어진다. gif를 웹브라우저로 열어보면 위와 같이 좌측에 2픽셀정도로 빠르게 무언가 지나가는 것이 보인다. 이런 상태로는 볼 수 없으므로 먼저 gif에 존재하는 모든 이미지를 가져온다. gifframe이라는 프로그램을 이용하여 gif에 있는 이미지를 추출할 수 있다. 총 201개의 사진이 추출된다. 보면 추출된 모든 이미지는 2x600의 크기를 지닌다. 이 이미지들을 뭉쳐서 출력을 하면 답을 얻을 수 있다. import Image res=Image.new("RGB",(402,600),(200,200,200)) # 배경 판 제작 img_list = list() file_name = 'Frame%d.png' for i in range(0,201): # 반복을 돌며 png를 ..

CTF | wargame 2016.09.06

TWCTF16 - super_express (Crypto)

Super Express encrypted 파일하나와 problem.py파일하나가 주어진다. 문제의 소스인 problem.py는 아래와 같다. import sys key = '****CENSORED***************' flag = 'TWCTF{*******CENSORED********}' if len(key) % 2 == 1: print("Key Length Error") sys.exit(1) n = len(key) / 2 encrypted = '' for c in flag: c = ord(c) for a, b in zip(key[0:n], key[n:2*n]): c = (ord(a) * c + ord(b)) % 251 encrypted += '%02x' % c print encrypted ● ..

CTF | wargame 2016.09.06

Hack-me / Apollo 11 moon hoax (프리메이슨)

Apollo 11 moon hoax이 문제는 위 기호에 숨겨진 의미를 찾아야 하는 문제이다. 처음엔 몰랐는데 다른 사이트의 문제를 풀다가 알게 되었던것이 프리메이슨 암호http://sojunism.tistory.com/1 프리메이슨 암호는 위처럼 9자리의 각각위치에 알파벳을 매칭시키는 방법이다. 물론 위 표로 대입을 하면 답을 얻을 수 없다.먼저 앞 부분을 풀어보면 이처럼 나오는데 hack me는 문제의 정답이 Password is로 시작한다. 따라서위 그림을 맞추면 일단 A? ?D ?? ST ?? I? ?? W? ?? OP ?R 이처럼 되는 것을 알 수 있다. 여기서 A와 D의 위치를 보고 ab cd... 이런식일 것이라는 추측하에 만들어 본 표가 아래와 같다. AB CD EF ST GH IJ KL U..

CTF | wargame 2016.07.22