되는대로 살자

[Web Hacking] Base64 인코딩 본문

2009~2014/Hacking_Web

[Web Hacking] Base64 인코딩

malu 2011. 7. 24. 13:17

보통 인코딩 하면 동영상 인코딩(.avi.wmv --> .mp4) 를 생각하실 겁니다. 즉 변환을 하는 것을 인코딩이라고 할 수 있는데, 특히 웹에서는 다양한 인코딩으로 다양한 정보를 암호화해서 보내는 특징이 있습니다. 그리고 그 반대가 디코딩이겠죠 

웹에서는 보통 
ASCII 코드 
URL Encoding 
HTML ENcoding 
Base 64 Encoding
MS script 
등의 인코딩을 사용하는데 특히 HTML Encoding 방식과 Base 64 Encoding 방식이 보안에서 중요한 부분입니다. HTML Encoding 같은 경우에XSS 취약점을 대응 방안으로 사용할 수 있는 인코딩이죠 .

Base64 Encoding 특징 
-2진 데이터를 ASCII 형태의 텍스트로 표현 가능
-Web 인증 중 기본 인증에 사용 
- 끝 부분의 padding(==) 으로 식별 가능 
-64 개의 문자를 사용 (영문 대, 소 ,숫자 ,+-)
-데이터를 6bit 단위로 표현 

base64 인코딩 법 (예시:ABC)
1.ABC --> Total Bit : 24bit (1문자당 8bit) 

2.2진수로 변경 
A:01000001
B:01000010
C:01000011

3.6bit로 나누기 
010000 / 010100 / 001001 / 000011 
/001 같이 3자리만 남았을 때에는 6자리로 맞춰주고 0을 채워주면 됩니다. 

4. 10진수로 변환 
16/20/9/3 
*Base 64 테이블 값 ABCD....영문 대, 소 ,숫자 ,+-
위의 64개의 값을 A부터 - 까지 1부터 64까지 차례대로 번호를 매겨서 그에 해당하는 문자로 변경하면 됩니다. 

Q(16), U(20), J(9) , D(3)

-->QUJD

6.총 비트수 나누기 3을 해서 나오는 나머지 갯수로 패딩(=)을 붙여줍니다. ABC는 패딩이 없군요
(24%8==0)

즉 QUJD가 나오게 됩니다.