๐กํด๋น ๋ด์ฉ์ pentestqym์ ๋ด์ฉ์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํ ๋ด์ฉ์ด๋ฉฐ,
๋ชจ๋ ์ ์๊ถ์ ํด๋น ์ฌ์ดํธ์๊ฒ ์์ต๋๋ค.
์ธ์ฝ๋ฉ(Encoding)์ด๋?
์ธ์ฝ๋ฉ : ์ด๋ค ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณํํ๋ ๊ธฐ์ ์ด๋ ๊ณผ์
๋์ฝ๋ฉ : ์ธ์ฝ๋ฉ๋ ํ์์ ๋ค์ ์๋์ ํ์์ผ๋ก ๋ณํํ๋ ๊ธฐ์ ์ด๋ ๊ณผ์
์น(App)์ ์ ์ธ์ฝ๋ฉ์ ํ ๊น?
์ด๊ธฐ ์น ํ๊ฒฝ์์๋ ASCII ๊ธฐ๋ฐ์ ๋ฌธ์ ํ๊ธฐ์ ๋ํ ์๊ตฌ์ฌํญ์ด ์ฃผ๋ก ์์์ง๋ง, ์ธํฐ๋ท์ ๊ธ๋ก๋ฒ ํ์ฅ๊ณผ ๋ค๊ตญ์ด ํ๊ธฐ์ ํ์์ฑ์ด ๋๋๋๋ฉด์ ๋ค์ํ ์ธ์ฝ๋ฉ ๊ธฐ๋ฒ์ด ๊ฐ๋ฐ๋์์ต๋๋ค. ์น์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ธ์ฝ๋ฉ ๊ธฐ๋ฒ์ ์ค์ํ ๊ฐ๋ ์ผ๋ก ์์๋์ด์ผ ํฉ๋๋ค.
์ธ์ฝ๋ฉ ์ข ๋ฅ์ ์ ํ
URL ์ธ์ฝ๋ฉ
URL ์ธ์ฝ๋ฉ์ URL์์ ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ผ๋ก, % ๋ฌธ์ ๋ค์ 16์ง์ ASCII ๋ฌธ์๋ฅผ ๋ถํ ์ฌ์ฉํฉ๋๋ค. URL์๋ ์ถ๋ ฅ ๊ฐ๋ฅํ ASCII ๋ฌธ์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํน์ ๋ฌธ์๋ ๋ค๊ตญ์ด ๋ฌธ์ ๋ฑ์ด ํฌํจ๋ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ์ ํด์ผ ํฉ๋๋ค. ๋ํ URL์์ ์ฌ์ฉ๋๋ ์์ฝ ๋ฌธ์๋ ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ๋ ๊ตฌ๋ถ์๋ก ์ฌ์ฉ๋๋ฏ๋ก ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์ธ์ฝ๋ฉ์ด ํ์ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์์ ๋งํฌ๋ฅผ ํตํด ํ์ธํ์๋ฉด ๋ฉ๋๋ค. ๋ง์ด ์ฌ์ฉ๋๋ ์์ฝ ๋ฌธ์๋ฅผ ์์งํ๋ฉด ์ข์ง๋ง.. ๊ทธ ๋ถ๋ถ์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋๊ธฐ๋ ํ๊ณ ์งํผ ํด๋ก ๋๋ ค์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ค๋ฐ์ด๊ธฐ์ ์ฌ์ฉ๋๋ ํด์ ๊ฒ์ํ์๊ฑฐ๋ ์๋ ๋งํฌ๋ฅผ ํตํด ํ์๋ฉด ๋ฉ๋๋ค.
์ด์ค ์ธ์ฝ๋ฉ(Double Encoding)
URL ๋์ฝ๋ฉ์ ์ํํ๋ ๊ณผ์ ์์ ์ ๋ ฅ๊ฐ์ ๋ ๋ฒ URL ์ธ์ฝ๋ฉํ๋ ๊ธฐ๋ฒ
์ด๋ก ์ธํด URL ์ธ์ฝ๋ฉ๋ ๊ฐ์ด ํ ๋ฒ ๋ ์ธ์ฝ๋ฉ๋์ด % ๋ฌธ์๊ฐ %25๋ก ํํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณต๋ฐฑ๋ฌธ์๋ URL ์ธ์ฝ๋ฉ ์ %20์ผ๋ก ํํ๋๋๋ฐ, ์ด์ค ์ธ์ฝ๋ฉ์ ์ ์ฉํ๋ฉด %2520์ผ๋ก ํํ๋ฉ๋๋ค.
์ ๋ฆฌํ๋ฉด, ์ด์ค ์ธ์ฝ๋ฉ์ ์ ๋ ฅ๊ฐ์ ๋ ๋ฒ URL ์ธ์ฝ๋ฉํ์ฌ % ๋ฌธ์๋ฅผ %25๋ก ํํํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
HTML ์ธ์ฝ๋ฉ
HTML ๋ฌธ์์์ ํน์๋ฌธ์(<, >)๋ค์ ํน์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์์ ์ธ ๊ณต๊ฒฉ์ ์ด์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์ดํ๊ธฐ ์ํด ํน์๋ฌธ์๋ค์ ์ธ์ฝ๋ฉํ์ฌ ์์ ํ๊ฒ ํ์ํฉ๋๋ค. ์ด๋ฌํ ์ธ์ฝ๋ฉ์ ์คํฌ๋ฆฝํธ ์คํ์ ์ด์ฉ๋ ์ ์๋ ํน์๋ฌธ์๋ค์ ๋ณํํ์ฌ HTML ๋ฌธ์ ์์์ ์์ ํ๊ฒ ํํํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์๋ฐ์ดํ("): "
- ํ๋ฐ์ดํ('): '
- ์ค๋๊ธฐํธ(&): &
- ์ฌ๋ ๊บฝ์ ๊ดํธ(<): <
- ๋ซ๋ ๊บฝ์ ๊ดํธ(>): >
- ๊ณต๋ฐฑ๋ฌธ์(Space):
Base64 Encoding
์ฆ, Base64๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ASCII ๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก ๋ณํํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์ฌ์ฉ๋ฉ๋๋ค. 1
์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋์๋ฌธ์(a-zA-Z), ์ซ์(0-9), "+"์ "/" ๊ธฐํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ, "="๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ Base64๋ก ์ธ์ฝ๋ฉํ๋ฉด ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์ฝ 33% ์ฆ๊ฐํ๋ค๋ ํน์ง์ด ์์ต๋๋ค.
Base64 ์ธ์ฝ๋ฉ์ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค:
- ๊ฐ ๊ธ์๋ฅผ 8bit(1byte)์ ๋ธ๋ญ์ผ๋ก ๋๋
- (8bit * 3) = 24bit(3bytes)์ ๊ทธ๋ฃน์ ๋ง๋ฌ
- 24bit/6bit ๋จ์์ ๊ฐ๋ณ ๊ทธ๋ฃน์ผ๋ก ๋๋
- ๊ฐ 6bit ๋จ์์ ๊ฐ๋ณ ๊ทธ๋ฃน์ ์์ธํ์ ๋ฐ๋ผ ๋ณํํฉ๋๋ค.
- 24bit ๊ทธ๋ฃน ๊ตฌ์ฑ์ 8bit ๋จ์๋ก ์ฑ์์ง์ง ์๊ณ ๋๋ฝ๋๋ ๊ฒฝ์ฐ ๊ธ์์๋งํผ "="๋ก ์ฑ์
์ค์ต(์์)ํด๋ณด๊ธฐ
ํด๋น ์ฌ์ดํธ๋ฅผ ํตํด ํ์ธ ํ ์ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์ดํ ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ์๋ฒ์๊ฒ ์ ๋ฌ(GET)ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ํ์์ผ๋ก ์งํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ๊ธ๋ฐ์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ, ์ธ์ ์ ์ง, ์ํ ๊ด๋ฆฌ ๋ฑ์ ์ํํ๊ฒ ๋ฉ๋๋ค.
์ ๋์ฝ๋ ์ธ์ฝ๋ฉ(Unicode Encoding)
์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ๋ค์ํ ๋ฌธ์๋ฅผ ์ปดํจํฐ์์ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋๋ค. ์ ๋์ฝ๋๋ ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ณ ์ ํ ์ฝ๋ ํฌ์ธํธ๋ก ๋งคํํ๋ ํ์ค์ด๋ฉฐ, ๋ค์ํ ๋ฌธ์ ์ธํธ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค. 2
์ด๋ป๊ฒ ์ ์ฅํ๋์ง์ ๋ฐ๋ฅธ ํ์(์๋์)์ ์๋ ์ด๋ฏธ์ง๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
// Name: endian.c
// Compile: gcc -o endian endian.c
#include <stdio.h>
int main() {
unsigned long long n = 0x4005a7;
printf("Low <-----------------------> High\n");
for (int i = 0; i < 8; i++) printf("0x%hhx ", *((unsigned char*)(&n) + i));
return 0;
}
๋์ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ์์ธํ ๋ด์ฉ์ ์์คํ ํธ๋์์ ๋ฐฐ์ธ ๋ถ๋ถ์ด๊ธฐ์ ์ฌ๊ธด ์น์ผ๋ก ์ค๋ช ์ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ๋ํ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ๋์ฑ ์์ธํ ๋ด์ฉ์ ์๋์ ๋ช ์๋์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ UTF-8๊ณผ UTF-16์ ๋๋ค.
UTF-8
๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ ๋ฐฉ์์ผ๋ก, ASCII ๋ฌธ์๋ 1๋ฐ์ดํธ๋ก ํํ๋๊ณ , ๋ค๋ฅธ ์ ๋์ฝ๋ ๋ฌธ์๋ 2๋ฐ์ดํธ ์ด์์ผ๋ก ํํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ด์ ๊ธฐํ ๋๋ถ๋ถ์ ์ธ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
UTF-16
๊ณ ์ ๊ธธ์ด ์ธ์ฝ๋ฉ ๋ฐฉ์์ผ๋ก, ๋ชจ๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ 2๋ฐ์ดํธ ๋๋ 4๋ฐ์ดํธ๋ก ํํํฉ๋๋ค. ๊ธฐ๋ณธ ๋ค๊ตญ์ด ํ๋ฉด(Basic Multilingual Plane, BMP)์ ์ํ๋ ๋ฌธ์๋ 2๋ฐ์ดํธ๋ก ํํ๋๊ณ , ๋๋จธ์ง๋ 4๋ฐ์ดํธ๋ก ํํ๋ฉ๋๋ค
์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ฉด ๋ค์ํ ์ธ์ด์ ๋ฌธ์๋ฅผ ๋์ผํ ๋ฌธ์ ๋๋ ๋ฐ์ดํฐ์์ ํํํ ์ ์์ผ๋ฉฐ, ์ ์ธ๊ณ์ ๋ค์ํ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ํธ ํธํ์ฑ ์๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์๋ค์ ์ก
Hex Encoding
Hex ์ธ์ฝ๋ฉ์ 16์ง์๋ก ํํ๋ ๋ฌธ์์ด๋ก ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ์ธ์ฝ๋ฉ ๊ธฐ๋ฒ์ ๋๋ค. ๊ฐ ๋ฌธ์๋ ๋ฐ์ดํธ์ 16์ง์ ๊ฐ์ ๋ํ๋ด๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ฐ ํ ์คํธ๋ก ํํํ ์ ์์ต๋๋ค.
์์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์๋ฉด์ Hex Encoding์ ๋ค์ ์๊ฐํด๋ณด์๋ฉด ๊ธ๋ฐฉ ์ดํด ๋ ๊ฒ๋๋ค.
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
- ์ฃผ๋ก ์ด๋ฉ์ผ์ด๋ ์น์์ ์ด๋ฏธ์ง๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฑฐ๋ ๋๋ ํํ๋ ์ฉ๋ [๋ณธ๋ฌธ์ผ๋ก]
- ์ ๋์ฝ๋ ์ปจ์์์์ด๋ ๋จ์ฒด์์ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ, ์ ๋์ฝ๋ ์ปจ์์์์์๋ ๊ฐ ๊ธ์๋ง๋ค ๊ณ ์ ํ ์ฝ๋๋ฅผ ๋งคํํด ๋์์ต๋๋ค. ์ด ๊ณ ์ ํ ์ฝ๋๋ฅผ ์ฝ๋ ํฌ์ธํธ(Code Point)๋ผ๊ณ ์นญํฉ๋๋ค. [๋ณธ๋ฌธ์ผ๋ก]
'๐โWeb_Study > ๐ฅโpentestgym' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL ์ธ์ ์ ๊ธฐ์ด (2) | 2023.07.07 |
---|---|
์น ์๋ฒ์ธก ๊ธฐ์ (5) | 2023.07.06 |
์น ํด๋ผ์ด์ธํธ์ธก ๊ธฐ์ (3) | 2023.05.29 |
์ฟ ํค์ ์ธ์ (0) | 2023.05.27 |
์น์ ์ดํด์ HTTP (0) | 2023.05.27 |