일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파일 업로드 취약점
- SQLi
- THM
- Reconnaissance
- FTZ
- tryhackme
- Cookie
- access control
- privilege escalation
- Cryptography
- Recon
- active recon
- Leviathan
- active reconnaissance
- php file upload
- Authentication
- php login page
- file upload
- php
- sql injection
- War Game
- overthewire
- Server Side Request Forgery
- BANDiT
- php To Do List
- ssrf
- OS Command Injection
- over the wire
- php 로그인 페이지 만들기
- php 파일 업로드하기
- Today
- Total
R's Hacking Daily Log
file signature 본문
오늘 note에서는 thm challenge 문제를 풀다가 알게 된 file signature에 대해 간단히 정리해볼까 한다.
1. file signature 의미
file signature의 정의를 찾아보면 다음과 같이 나온다.
"A file signature is a unique sequence of identifying bytes written to a file's header."
말 그대로 파일 제일 첫 부분에 나오는 고유 시퀀스를 말하는데, 시퀀스란 간단히 문자열이라고 생각하면 편하다.
결론적으로 file signature의 의미는 파일 첫 부분에 열거된 고유한 byte sequence라는 것.
2. file signature 역할
그렇다면 file signature은 어떤 용도로 사용되는 걸까??
정의에서 엿볼 수 있겠지만, "unique"한 값이기 때문에 file signature을 확인하면
"이 파일이 어떤 파일 종류"인지를 알 수 있다.
"파일 종류를 안다!"라는 건 computer가 이 파일 내용을 읽거나 파일을 열 때 어떤 application을 사용해야 할지 결정하기 위한 정보로 사용될 수 있다.
여기서 말하는 파일 종류는 파일 확장자를 의미한다.
예를 들면 png, jpg, pdf, exe, sys 등 파일 뒤에 " . " 하고 붙는 단어를 파일 확장자라고 부른다.
3. file signature 확인해 보기
file signature은 앞에서 말했듯이 파일 종류마다 다 다르다. 검색 창에 file signature을 치고 이런저런 글을 찾아보면 상당히 많은 다양한 signature을 확인해 볼 수 있다.
kali linux 기준으로 다른 방법을 보자면, hexadecimal viewer or editor를 사용해서 file을 열어보면 16진수로 쓰인 내용을 볼 수 있기 때문에 hexadecimal 부분의 맨 첫 부분을 확인해 보면 file signature를 볼 수 있다.
(hexeditor + file_name => 해당 파일을 hexadecimal 내용으로 출력시켜 읽거나 수정할 수 있다.)
4. hexadecimal 이해하기
hexadecimal은 16진수를 의미하는 데 여기서 말하는 16은 16가지의 서로 다른 문자라고 생각하면 된다. 따라서, 총 16가지의 문자로 수를 표현하는 방식을 16진수라고 볼 수 있다.
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }로 0~15까지의 수를 표현할 수 있고 A ~ F까지는 10 ~ 15까지의 NUMBER를 나타낸다고 이해하면 된다.
16진수는 2진수로 표현할 때는 4비트를 사용하기 때문에 총 8비트에는 2개의 16진수가 들어갈 수 있으므로 결론적으로 1 byte에는 2개의 16진수가 있는 셈이다.
example] png filefile signature : 89 50 4E 47 0D 0A 1A 0A 총 8개의 바이트(byte)로, 하나의 바이트 당 두 문자가 작성된 것.
binary로 몇 개만 나타내보면
89 :: 10001001 :: 1000(8) + 1001(9)
50 :: 01010000 :: 0101(5) + 0000(0)
4E :: 01001110 :: 0100(4) + 1110(E) 인 8비트로 표현된다.
'Daily-Note' 카테고리의 다른 글
CLI & GUI (0) | 2023.03.08 |
---|---|
prefix & postfix (0) | 2023.03.07 |
/tmp (0) | 2023.02.27 |
/etc/shadow & /etc/passwd (0) | 2023.02.24 |
/dev/null (0) | 2023.02.22 |