일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Database
- 구현
- HackCTF
- CTF
- Digital Forensics
- php
- wargame
- misc
- Text
- cryptography
- 정렬
- 그리디 알고리즘
- 인코그니토
- SuNiNaTas
- writeup
- 문자열
- C
- Forensics
- xcz.kr
- Incognito
- 수학
- MySQL
- Web Hacking
- 사칙연산
- Web
- N0Named
- Network
- Python
- 써니나타스
- 백준
- Today
- Total
목록wargame (62)
보안을 그리다, 훈이
Reverse Engineering 분야 써니나타스(SuNiNaTaS) 9번 문제에 대한 풀이입니다. 써니나타스에서 가장 쉬운 리버싱 문제다. 먼저, SuNiNaTaS.zip 파일을 다운로드하고 암호 suninatas로 압축을 해제하면 Project1.exe 파일이 나온다. 해당 exe 파일을 언패킹하기 위해 upx를 사용하였다. > upx -d Project1.exe 'Unpacked 1 file.' 문구가 출력된 것을 보아 성공적으로 언패킹되었다. 그리고 해당 파일을 Hex Viewer로 불러와 간단히 'SuNiNaTaS'를 검색해보았다. 친절하게 'Congratulation!' 문구도 넣어둔 것을 보고 해당 값 913465가 플래그인 것을 확신했고 Auth에 넣어보니 인증에 성공하였다. Flag :..
N0Named Wargame Forensics 분야 123321123(200p) 문제에 대한 Write Up입니다. fore5.png 파일을 다운로드하고 hex 값을 뒤져보니 내부에 무수히 많은 PNG 파일이 숨어있었다. 위 그림과 같이 hex 값이 뒤집힌 채로 존재하는 경우도 다반사였다. 따라서, 뒤집힌 파일들의 hex 값들을 복구하고 플래그를 찾으면 될 것 같다. 먼저 fore5.png 파일의 hex 값을 추출하여 fore5.txt에 저장한 후, 이를 byte 단위로 뒤집어 Hex_reverse_fore5.txt에 저장해 두었다. 파일에 hex 데이터를 쓰기 위해 Python3로 아래 코드를 작성하였고, # Writing hex data into a file - 파일에 16진수 데이터 쓰기 impor..
N0Named Wargame Forensics 분야 Left Side B(140p) 문제에 대한 Write Up입니다. 문제 이름에 힌트가 있다고 하는데 보자마자 LSB(least significant bit, 최하위 비트) 관련 문제라고 생각했다. LSB 변조를 통한 스테가노그래피 기법은 대표적으로 24bit 이미지 파일인 JPEG와 BMP 파일에 적용된다. 이 기법은 실제 이미지에 영향을 주긴 하지만, 24bit가 하나의 색을 표현하기 때문에 영향력이 큰 MSB(Most Significat Bit)와 달리 LSB가 변조되어도 사람의 눈으로 알아채기 힘들고 Hex Editor를 통해 분석해보면 알 수 있는 정도이다. task.bmp 파일의 hex 값을 살펴보면, 무수히 많은 FF 사이에 FE가 섞여있는..
N0Named Wargame Forensics 분야 길에서 주어온 만두(100p) 문제에 대한 Write Up입니다. mandu.zip 파일을 다운로드하고 압축을 해제해보니 big.png와 readme.txt 파일이 출력된다. 비밀번호를 찾아 마트료시카 이미지 파일을 까보라는 듯 하다. 먼저, big.png 파일의 hex 값을 뒤져보자. PNG 푸터 시그니처 뒷 부분에 PASS:1234가 나오는데, 이는 비밀번호로 추정된다. OpenStego 툴을 사용하여 까보도록 하자. medium.png가 추출된다. 계속 돌려보면 small.png가 추출되고 이후 flag.zip 파일이 나온다. Flag : NND{Matryoshka_&&_OPENSTEGO!>.
N0Named Wargame Forensics 분야 어제 뭐 했어?(100p) 문제에 대한 Write Up입니다. yesterday.pcap 파일을 다운로드하고 Wireshark로 열어보니 무수히 많은 패킷이 출력된다. 먼저, http로 필터링해보니 아래와 같이 쓸만한 패킷들이 나온다. [Follow] - [HTTP Stream]을 통해 패킷을 열어보자. download.php 페이지 소스 코드를 보니 music.zip 파일의 pw가 나와있다. 이제 music.zip 파일을 찾고 복원해보자. PK로 시작하는 것을 보니 압축 파일인 것을 알 수 있고, 내부에 flag.txt와 haru.jpg 파일이 함께 존재할 것으로 예상할 수 있다. music.zip을 추출한 후, pw인 'N0Named_Team_is_..
N0Named Wargame Forensics 분야 누가 진짜일까?(70p) 문제에 대한 Write Up입니다. HELL.zip 파일을 다운로드하고 압축을 풀어보면 두 개의 bmp 파일이 나타난다. 언뜻 보기엔 같은 이미지로 보이지만 분명 무언가 다른 부분이 존재할 것이다. 먼저, 각각 파일의 hex 값을 추출하여 txt 파일로 저장해둔 후 서로 다른 hex 값을 찾아 출력하는 소스코드를 Python3로 구현하였다. # compare_Hex.py a1 = list(map(''.join, zip( *[iter(open('/nonamed/Digital Forensics/누가 진짜일까?/HELL/Hex_CERBERUS.txt', 'r').read().replace('\n', ''))]*2))) ..
HackCTF Web 분야 Guess me(100p) 문제 풀이입니다. 주어진 URL로 접속해보자. 비밀 코드를 맞추면 플래그를 얻을 수 있다고 한다. 먼저, 소스코드를 살펴보자. 파일 secret.txt의 내용을 변수 $secretcode에 넣어두고, 이 값을 extract($_GET);으로 받아온 값인 변수 $guess와 비교하여 동일한 값이라면 플래그를 출력하는 구조이다. 본 문제는 PHP extract() 함수의 취약점을 다루고 있다. extract() 함수를 통해 $_GET 또는 $_POST로 넘어온 인자는 함수 사용 전의 기존 값을 overwrite할 수 있으며, 이를 방지하기 위해서는 변수를 선언하기 이전에 extract() 함수를 사용하여야 하고 overwrite를 방지하기 위해 EXTR_..
N0Named Wargame Forensics 분야 조별과제_배드엔딩(50p) 문제에 대한 Write Up입니다. '1_n.pptx' 파일을 다운로드하고 열어보자. 이렇게 친절하게 힌트도 준다. 일반적으로 PPTX 확장자를 가진 파일의 헤더 시그니처는 '50 4B 03 04 14 00 06 00'이고, ZIP 파일의 헤더 시그니처는 '50 4B 03 04'이므로 해당 파일을 .zip으로 변환하여 압축을 해제할 수 있다. 해당 폴더에서 [ppt] - [media]에 가보니 'secret.png'가 존재한다. Flag : NND{gRouP_ProjEct?_IDK_G00DLUCK}
N0Named Wargame Forensics 분야 회사 찾기(50p) 문제에 대한 Write Up입니다. 'FINDAJOB.zip' 파일을 다운로드하고 실행해보니 압축이 풀리지 않는다. 먼저, hex 값을 보도록 하자. ZIP 파일의 헤더 시그니처는 '50 4B 03 04'이지만, 해당 파일의 헤더 시그니처에 '50 50 03 04'로 장난을 쳐 놓았다. 알맞게 수정한 후 압축을 해제하면, 여기가 좋겠군! ________ _______ /N \ N \/_______/ ______/\ \ / \/ /\ \/ /\ \_____________ /\ \ \ \/______ / /D /:\\ \ ::\ /::\ /::{ /____ ____ __ /\ \ \ \/_______/ /:\\ /:A:\\______\F..
N0Named Wargame Forensics 분야 첫 번째 문제인 MagicIMAGE(5p)에 대한 Write Up입니다. 'mandu.png' 파일을 다운로드하고 실행해보니 '파일을 열 수 없습니다.'라는 경고창이 나온다. 먼저, 해당 파일의 hex 값을 살펴보자. PNG 확장자를 가진 이미지 파일은 헤더 시그니처 값으로 '89 50 4E 47 0D 0A 1A 0A'를 가져야 하는데, 위 그림을 보면 다른 값을 가지고 있다. 따라서, 헤더 시그니처 값을 알맞게 수정해주고 저장하면 정상적인 이미지가 출력된다. Flag : NND{magic_number_png}