반응형

워게임 270

[CTFlearn] abandoned place - 포렌식 / HxD

CTFlearn의 예순두번째 문제 이번엔 jpg 파일을 이용한 포렌식 문제인데 기존에 jpg 가 주어졌던 다른 포렌식 문제와는 조금 다른 유형이다. 문제 설명을 읽어보면 힌트가 주어져 있다. hint: dimensions, dimensions, everything is in dimensions. dimensions 차원이라는 뜻도 있지만 치수라는 뜻도 있다. 여기서 말하는 dimensions 는 주어지는 jpg 파일의 크기를 의미하는듯 하다. 문제에서 주어지는 abondoned_street_challenge2.jpg 파일이다. 버려진 거리의 사진인데 사진의 내용은 크게 중요하지 않다. 이번 문제를 풀려면 jpg 파일 헤더의 구조를 알아야 한다. 위키피디아에 관련된 내용이 나와있다. FF D8 은 이미지의..

워게임/CTFlearn 2023.01.27

[CTFlearn] The adventures of Boris Ivanov. Part 1. - 포렌식 / Stereogram

CTFlearn의 예순 한번째 문제 이번 문제는 포렌식으로 분류되어 있는데, 개인적으로 이런 문제는 MISC로 넣어야 된다고 본다. 근래 풀어본 문제중 가장 충격적인 문제였다.. 문제 설명을 읽어보면 KGB 요원인 Boris Ivanov 가 비밀 자료 거래 정보를 획득해서 비밀 자료를 거래하는 통신을 가로챘다고 한다. 어떤 데이터를 거래하려고 했는지 알아내는것이 이번 문제의 목표이다. 문제에서 주어지는 파일은 Boris_Ivanov_1.jpg 파일이고 위와 같이 생겼다. 내용은 John BROWN과 Michael SMITH 가 무언가를 거래하는 내용인데 정황상 맨 아래쪽에 보이는 모자이크 같은 부분이 거래하는 내용인것 같다. 이게 뭔지 알아내는데 진짜 오랜 시간이 걸렸다.. 가장 먼저 시도한건 지난 문제..

워게임/CTFlearn 2023.01.25

[CTFlearn] Symbolic Decimals - 암호학 / Python

CTFlearn의 예순번째 문제 전혀 Hard 하지 않은 Hard 난이도의 암호학 문제이다. 문제 설명이 좀 친절하지 않았다면 어려울 수 있는 문제인데 문제 설명이 너무 친절하다.. 심볼로 메세지를 숨기는 방법을 아냐면서 예를 들어주는데 !@#$%^&*( 같은경우 123456789 와 각각 매칭이 된다고 한다. 이것 그냥 키보드 숫자키를 의미하는 것이다. ^&,*$,&),!@#,*#,!!^,(&,!!$,(%,$^,(%,*&,(&,!!$,!!%,(%,$^,(%,&),!!!,!!$,(%,$^,(%,&^,!)%,!)@,!)!,!@% 문제에서 주어진 이 암호문을 키보드 숫자키에 맞춰서 숫자로 바꾸면 무언가 의미있는 데이터가 나올 것이다. 양이 그렇기 길지 않아서 그냥 수작업으로 일일이 바꿔도 되지만 파이썬 코드..

워게임/CTFlearn 2023.01.23

[CTFlearn] Ambush Mission - MISC / Stegsolve

CTFlearn의 쉰아홉번째 문제 이번 문제는 MISC 카테고리의 문제이다. MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 그런데 사실 문제 풀어보면 스테가노그래피 문제라 포렌식 쪽으로 봐도 될 것 같다. 문제 설명을 읽어보면 타겟을 체포하기 위해 통신을 가로채서 이미지를 하나 획득했는데, 이미지를 통해 약속시간이 언제인지 알아내 달라고 한다. 문제에서 제공되는 파일은 clue.png 이고, 내용은 위에 있는것과 같다. 그냥 사각형 여러개 그려진 의미없는 그림처럼 보인다. 이 문제는 Stegsolve 라는 도구를 사용하면 풀 수 있다. 이전에 CTFlearn에서도 다루지 않았나 싶었는데, CTFlearn에서는 처음 나온 유형이었고, 블로그에서는 관련된 문제들을 ..

워게임/CTFlearn 2023.01.21

[CTFlearn] Blank Page - 포렌식 / Unicode / HxD

CTFlearn의 쉰 여덟번째 문제 이번엔 조금 참신한 포렌식 문제이다. 이전에도 Unicode와 관련된 비슷한 유형의 문제를 풀어본 적 있는데 (https://hackingstudypad.tistory.com/354) 이번 문제의 풀이법은 조금 다르다. 문제 설명을 읽어보면 Super Agent School을 졸업한 스파이인 나에게 Master-Mind가 비밀 지령을 줬는데 읽지 못하겠다고 도와달라고 한다. TheMessage.txt 파일이 주어지는데 메모장으로 열어보면 아무것도 없는 빈 파일이다. 메모장을 드래그 한번 해봤더니 그래도 뭔가 내용이 들어있는것 처럼 블록이 잡히는걸 볼 수 있었다. 그래서 HxD를 이용해 TheMessage.txt 파일을 열어봤다. 안에 많은 내용이 적혀있었는데, 자세히 ..

워게임/CTFlearn 2023.01.18

[CTFlearn] Tone dialing - 암호학 / DTMF

CTFlearn의 쉰 일곱번째 문제 알면 쉬운데 모르면 난감한 그런 유형의 문제이다. 근데 사실 문제 제목에서 큰 힌트를 같이 줘서 그렇게 어렵지 않게 풀 수 있다. 우선 주어진 you_know_what_to_do.wav 파일을 받아서 들어보면 뭔가 전화기 숫자 버튼을 누르는 듯한 소리가 들린다. 마침 문제 제목도 Tone dialing 이라고 되어있으니 전화기가 맞는듯 하다. 여기까지 생각했다면 문제의 의도가 명확해진다. 소리를 듣고 어떤 버튼을 눌렀는지 맞춰야 하는 것이다. 근데 사실 절대음감도 아니고, 마땅한 비교 대상이 있는것도 아니라 이 부분이 어렵다. Tone dialing 관련해서 구글에 검색하다보면 DTMF(Dual-tone multi-frequency signaling) 관련된 내용들을 ..

워게임/CTFlearn 2023.01.16

[CTFlearn] PIN - 리버싱 / IDA

CTFlearn의 쉰 여섯번째 문제 이번엔 처음으로 나온 리버싱 문제이다. 문제 난이도가 Medium으로 분류되어 있는데 풀어보면 Easy 수준으로 느껴질만큼 쉽다. 문제에서 주어지는것은 rev1 파일이다. 리눅스 환경에서 file 명령어를 통해 어떤 파일인지 확인할 수 있다. ELF 파일이라고 나오는데 ELF는 리눅스에서 실행가능한 실행파일이다. 한번 실행시켜 봤더니 실행하자마자 Masukan PIN = 이라는 문구가 나오며 사용자 입력을 받는데 123 이라고 입력해봤더니 PIN salah! 라는 문구가 출력되었다. 검색해보니 salah 는 잘못되었다는 뜻이라고 한다. IDA 라는 디스어셈블러를 이용해 rev1 파일을 열어보았다. main 함수의 수도코드를 가장 먼저 살펴보니 scanf 로 사용자의 입..

워게임/CTFlearn 2023.01.13

[CTFlearn] The Credit Card Fraudster - 프로그래밍 / Python

CTFlearn 의 쉰다섯번째 문제 이번엔 Easy난이도의 프로그래밍 문제이다. 이전문제들과 달리 뭔가 설명이 길어서 조금 긴장했다. 내용을 대강 읽어보면 INTERPOL에서 추적하고 있는 신용카드 사기꾼을 붙잡았는데 사기꾼이 가지고 있던 영수증에 찍힌 신용카드 번호의 일부분을 보고 신용카드 전체 번호가 어떻게 되는지 알아내는것이 목표이다. 힌트는 두가지가 주어진다. 1. 신용카드 번호는 123457의 배수이다. 2. 신용카드 번호 는 Luhn 알고리즘으로 검증할 수 있다. 한번 파이썬으로 구현해본다. cardnum_f = '543210' cardnum_b = '1234' for i in range(999999): cardnum_m = ('00000' + str(i))[-6:] cardnum = int(..

워게임/CTFlearn 2023.01.11

[CTFlearn] Simple bof - 포너블 / 버퍼오버플로우

CTFlearn의 쉰네번째 문제 드디어 처음나온 포너블 문제이다. 포너블이라서 살짝 쫄았는데 이건 내가 봤던 포너블 문제중에서 가장 쉽고 친절한 문제였다. 문제 제목에 나온것처럼 문제의 목표는 버퍼오버플로우를 하는것이다. 먼저 문제에서 주어지는 bof.c 코드를 살펴본다. 크기가 16인 padding, 크기가 32인 buff 배열이 있고, nonsecret에는 0xffffff00, secret에는 0xdeadbeef 라는 값이 각각 들어있다. 프로그램을 실행시키면 Input some text: 를 출력하면서 사용자의 입력을 받는데, 입력을 받을 때 입력값에 대한 길이를 검증하지 않기 때문에 버퍼오버플로우 취약점이 발생한다. 버퍼오버플로우로 secret 변수의 값을 0x67616c66 으로 덮어쓴다면 pr..

워게임/CTFlearn 2023.01.09

[CTFlearn] Image Magic - 프로그래밍 / 포렌식 / PIL

CTFlearn의 쉰세번째 문제 이번엔 처음으로 나온 프로그래밍 카테고리의 문제이다. 사실 여기서 분류는 프로그래밍으로 했지만 거의 포렌식 문제라고 생각한다. 간만에 CTFlearn에서 생각해볼 만한 문제가 나와서 재미있었다. 문제 설명을 읽어보면 누군가가 사진의 픽셀을 가져와 재구성했다고 이걸 PIL 모듈을 이용해 복원할 수 있냐고 물어본다. 이미지가 변경되기 전 Width는 304라는 힌트도 주어진다. 이것이 문제에서 주어지는 out copy.jpg 파일이다. 아무것도 없는것 처럼 보이는데 사실은 그게 아니다. 이미지를 우클릭해 속성을 보면 너비가 27968, 높이가 1인 것을 볼 수 있다. 아까 문제 설명에서 본대로 누군가가 이미지의 픽셀을 일렬로 쭉 늘어놓은 것이다. 일단 원래의 높이를 구해준다...

워게임/CTFlearn 2023.01.06
반응형