분류 전체보기20 [CTF] png 파일 속에 숨은 jpg 파일 찾기 이전 게시물에서 만든 hidencat.png 파일 속에 숨은 cat.jpg파일을 찾는 법을 알아보자. 아래 첨부한 파일을 다운로드하여 과정을 따라갈 수 있다. Hex Editor로 png파일을 열어보자. 필자는 UltraHex를 사용했다. 먼저 푸터 시그니처를 살펴본다. jpg파일의 푸터 시그니처인 FF D9가 들어있다. 이것으로 png파일 안에 jpg파일이 숨어 있음을 유추할 수 있다. 여기서 jpg파일을 꺼내는 과정은 다음과 같다. 순서대로 따라가보자. jpg 파일을 꺼내는 과정 1. 숨은 파일(jpg)의 헤더 시그니처 탐색 2. 헤더 시그니처~푸터 시그니처 부분을 잘라냄 3. 새 창에 붙여넣고 저장 1. 숨은 파일(jpg)의 헤더 시그니처 탐색 jpg의 헤더 시그니처는 FF D8 FF ~ 꼴이다. .. 2023. 10. 1. [CTF] png 파일 속에 jpg 파일 숨기기 (steganography) 파일 속에 무언가를 숨기는 기술을 스테가노그래피(steganography)라고 부른다. Forensics 분야에서 이것을 응용한 문제를 자주 만나볼 수 있을 것이다. 이 게시물에서는 png 파일 속에 jpg 파일을 숨기는 방법을 설명하고자 한다. 이전 게시물인 파일 시그니처에 대한 학습을 전제로 한다. png파일 box.png와 jpg파일 cat.jpg가 있다. cmd 창을 실행시켜 copy 명령어를 사용한다. 문법은 아래와 같다. copy /b 원본파일 + 숨길파일 변형파일이름 원본파일과 숨길파일을 입력할 때는 해당 파일을 드래그해 cmd창에 drop하면 된다. 변형 파일 이름은 임의로 설정하면 되며 확장자명까지 적어준다. hiddencat.png 를 적었다. 원본파일과 변형파일을 Hex Editor로.. 2023. 10. 1. [CTF] 파일 시그니처 Forensics 문제 풀이에 기본이 되는 파일 시그니처에 대해 알아보자. png, jpg, gif 등 다양한 파일 형식이 존재한다. 이들은 각각 반드시 포함하고 있는 특정 바이트들이 존재하며, 이를 파일 시그니처라고 부른다. 파일 시그니처의 위치와 길이, 모양은 형식별로 다르고, Hex Editor로 열었을 때 확인할 수 있다. 이중에서도 파일의 처음에만 존재하는 시그니처는 헤더(Header)시그니처, 파일의 마지막에만 존재하는 시그니처는 푸터(Footer)시그니처라고 부른다. Hex Editor 프로그램은 여러가지가 있다. 윈도우에서는 HxD를, MAC에서는 Hex Fiend 또는 UltraHex를 권장한다. 임의의 png파일을 UltraHex로 열었다. 푸터 시그니처가 알고 있던 png의 푸터 시그.. 2023. 9. 30. [DREAMHACK] rev-basic 4~6 https://s0scod3.tistory.com/13 [DREAMHACK] rev-basic 1~4 DREAMHACK에서 제공하는 리버스 엔지니어링 기초 문제 4개를 풀어보자. 네 문제 모두 비슷한 구조를 갖고 있어 하나를 해결하면 다음 문제는 쉽게 접근할 수 있다. 따라서 1번 문제를 자세하게 설명 s0scod3.tistory.com 위 게시물에 이어서 rev-basic 4~6번 문제를 풀어보자. https://dreamhack.io/wargame/challenges/18 rev-basic-4 Reversing Basic Challenge #4 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분.. 2023. 9. 19. [Journal] 반복로그 (log*) 서론 시간 복잡도 개념에 대한 탐구하던 중 log* 라는 기호를 가진 수학 기호를 발견하였다. 이것이 갖는 의미가 무엇인지 알아보고자 한다. 본론 컴퓨터 과학에서 n의 반복로그는 log* 라고 쓴다. 로그함수를 반복적으로 적용시켜 결과값이 1 이하가 될 때 까지 반복하는 함수이다. 수학적 정의는 아래와 같다. Python을 이용해 간단하게 함수를 구현했다. 1에서 200까지의 반복로그와 로그 값을 그리는 프로그램이다. 로그는 최적화를 위해 외부 라이브러리에서 값을 가져왔고, 반복로그는 이를 이용해 함수로 구현했다. Matplotlib 라이브러리를 활용해 그래프를 시각화했다. 얻은 그래프는 아래와 같다. 보라색 그래프가 반복로그의 그래프이고, 파란색 그래프가 밑이 2인 로그함수의 그래프이다. 그래프를 통해.. 2023. 9. 18. [DREAMHACK] rev-basic 1~3 DREAMHACK에서 제공하는 리버스 엔지니어링 기초 문제 3개를 풀어보자. 세 문제 모두 비슷한 구조를 갖고 있어 하나를 해결하면 다음 문제는 쉽게 접근할 수 있다. 따라서 1번 문제를 자세하게 설명하고, 나머지 문제는 차이점 위주로 설명한다. https://dreamhack.io/wargame/challenges/15 rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 주어진 파일을 IDA64에서 실행시켰다. C언어 코드를 해석할 것이기 때문에 Tab을 눌러 Decompili.. 2023. 9. 11. 이전 1 2 3 4 다음