본문 바로가기
Web Hacking

4. Encoding Schema

by 귀멸 2022. 6. 15.

0. Encoding Schema

Encoding은 암호화가 아니다. 예전에는 암호화 비슷한 느낌으로 쓰인 적도 있었다고 한다.
상대방이 이해할 수 있는 형태로 데이터를 바꾼다.
ex) ASCII code (아스키코드)

- URL Encoding

- Force Full URL Encoding
  IDS(침입탐지시스템) & IPS(침입방지시스템) 등의 통제를 우회하기 위한 용도로 사용
  (공격에 많이 사용하는 어떤 특정 단어들을 스크리닝하는 것을 회피하기 위함)

 

- EUC-KR
 - 8비트 문자 인코딩 / 대표적인 한글 완성형 인코딩

- Unicode
 - 16비트 encoding으로 2^16개의 표현으로 전 세계 문자를 모두 표현 가능

- UTF-8
 - 유니코드에서 가변 길이 문자 인코딩을 통해 낭비를 없앰. 가장 많이 사용

 

1. HTML Encoding (중요)
  HTML 문서 내에서 특별한 기능을 수행하는 문자들을 안전하게 브라우저에 표현하기 위해 인코딩
  XSS 공격에 대응하기 위한 방법으로 사용

 

Step1.

Server PC에서 
c:Inetpub/webhack 폴더에 아래 htmlencoding.html 파일 작성 후 저장

<html>

<head>
<title> html encoding test </title>
</head>
<body>
<시간>과 <노력>을 투자한 만큼 <실력>이 쌓여간다.
<script>alert("hack!")</script>

</body>

</html>

Client PC에서 웹브라우저에서 주소 입력
http://192.168.1.20/htmlencoding.html    << 페이지 출력 확인


sever에 있는 htmlencoding.html 파일에서 

<script>alert("hack!")</script>에서 script 테그에

아래 HTML encoding 값으로 수정 후 다시 페이지 출력확인!! 동일하게 출력됨
&lt;script&gt;alert("hack!")</script>

 


2. Base64 Encoding(중요)
 - MIME(Multipurpose Internet Mail Extensions)에서 주로 사용
   ; 인터넷의 전자 메일에서 사용되는 문자 데이터를 표현하기 위한 형식 표준
 - Web 인증 중 하나인 기본 인증(Basic Authentication)에도 사용됨
 - 64개 문자 / 6bit 한 문자 표현 남은 bit 뒤에 0을 삽입하여 6bit를 맞춰줌  

 - 글자 수 n%3 만큼 =을 삽입하여 padding 처리

  Web = ?

  W   e  b
  87  101 98                                       << 아스키코드 표에서 10진수로 표현
  01010111 01100101 01100010       << 10진수를 2진수로 계산
  010101  110110  010101  100010   << 6bit씩 끊어줌
  21           54         21          34           << 10진수로 바꿔 줌
  V            2            V            i             << Base64 색인

  Web = V2Vi
 

  Hack = ? 


  H   a   c   k
  72 97 99 107
  01001000 01100001 01100011 01101011
  010010 000110 000101 100011 011010 11+0000 << 6bit에 맞춰서 0을 추가해준다
  18 6 5 35 26   
  SGFjaw==

 

 Hack = SGFjaw==

 

paros에서는 base64에 대한 decoding을 지원한다.  왓더???

Tools - Encode/Hash로 가서 내용 넣어주고 Encode / Decode 양방향으로 원클릭 가능.

 

댓글