일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- php
- Forensics
- SuNiNaTas
- xcz.kr
- CTF
- writeup
- Network
- Web Hacking
- 백준
- 사칙연산
- Text
- 인코그니토
- MySQL
- wargame
- Web
- 그리디 알고리즘
- Database
- 구현
- 써니나타스
- N0Named
- HackCTF
- 문자열
- 정렬
- 수학
- C
- misc
- Digital Forensics
- cryptography
- Incognito
- Today
- Total
목록전체 글 (439)
보안을 그리다, 훈이
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_..
PHP extract() function extract() 함수는 배열 속의 키 값들을 변수화하는 역할을 한다. // Code 1 - Example of using the PHP extract() function 위 Code 1의 결과는 아래와 같다. // The result of Code 1. x = 1 y = 2 배열 a 속의 키 값인 x와 y가 extract() 함수로 인해 변수화된 것을 확인할 수 있다. 마찬가지로 $_GET 또는 $_POST 인자도 extract() 함수를 사용하여 넘길 수 있으며, 이 경우에도 GET 또는 POST로 넘어오는 파라미터와 값을 변수와 그 초기값으로 설정할 수 있다. PHP extract() function 취약점 extract() 함수를 사용하여 $_GET 또는 ..
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}
스테가노그래피(Steganography)란? 전달하려는 기밀 정보를 JPEG, PNG, GIF, BMP 등의 이미지 파일이나 MP3 파일 등에 숨기는 심층암호 기법을 말한다. 이미지 파일을 활용한 스테가노그래피 기법 1 - 삽입 JPEG, PNG, GIF 등의 파일에는 파일의 끝을 알리는 푸터 시그니처 즉, EOI(End Of Image) byte가 존재한다. EOI byte 뒤에 어떠한 값을 삽입하더라도 실제 파일을 열어보면 삽입된 데이터가 무시된 채 이미지가 출력된다. 즉, 원본 이미지 파일과 조작된 이미지 파일을 비교해보아도 차이가 나지 않는다. 따라서 EOI byte 뒤에 데이터를 숨길 수 있다. 예시) JPEG 파일의 EOI byte 'FF D9' 뒤에 전달하려는 기밀 정보를 숨길 수 있다. 또..
HackCTF Web 분야 마법봉(100p) 문제 풀이입니다. 제시된 링크로 접속해봅시다. 해쉬에 마법을 부여하면 뚫린다고 아주 친절하게 명시해 주었네요. 이는 PHP에 존재하는 Hash Magic Vulnerability에 대한 문제임을 유추할 수 있습니다. PHP Magic Hash Vulnerability는 PHP에서 == 연산자로 비교 시, 문자열의 형식이 ^0+e\d*$로 되어있을 때 이를 숫자형 데이터와 비교하게 되면 0으로 인식하게 되는 현상을 이용한 것인데 0의 n제곱은 항상 0이기 때문에 취약점이 발생하게 됩니다. 이전에 풀었던 인코그니토 문제와 같은 유형이네요! 자세한 풀이는 아래 링크를 참조하면 좋을 것 같습니다 :) [2021 INCOGNITO CTF writeup] Web - Do..
써니나타스(SuNiNaTaS) Forensics 분야 26번 문제 풀이입니다. Game 26 szqkagczvcvyabpsyincgozdainvscbnivpnzvbpnyfkqhzmmpcqhzygzgfcxznvvzgdfnvbpnjyifxmpcqhzygbpnoyaimygbzgngbvmpcqhzygcbpinnbzqndicgxhiztozgcfmpcqhzygbpnjyifxeagzyimpcqhzygbpneagzyidicgxhiztozgcfmpcqhzygcgxcoyaibzqnvyabpsyincggcbzygcfmpcqhzygszqzvbpnozivbvyabpsy suninatas.com 문제를 보니 빈도분석(Frequency Analysis)이라고 명시되어 있습니다. 통계에 따르면, 평문 문자의 출현빈도는 특정 문자에 ..