인디안 보호구역

Webhacking.kr 6 본문

Study/WebHacking 공부하는 인디안

Webhacking.kr 6

Indie-An 2019. 5. 27. 17:27
  1. 문제 풀이

<첫인상>

base64 인코딩과 관련된 문제인가보다 하며 스크립트를 클릭!


<코드 확인 및 문제풀이>

이번에도 문제 페이지의 HTML 코드는 아무 영양가가 없었기에 바로 index.phps를 확인해보았다.

전체적인 순서는 아래와 같다.

‘인코딩 20번 -> 문자열 치환 -> 쿠키 생성 -> 문자열 치환 -> 디코딩 20번’

 

그런데 처음 시작하는 if문을 살펴보면, user라는 쿠키가 없을 경우


인코딩 20번 -> 문자열 치환 -> 쿠키 생성 /// 문자열 치환 -> 디코딩 20번

 

위와 같이 인코딩부터 쿠키생성까지의 과정이 생략되게 된다. 결국 페이지는 ‘문자열 치환 -> 디코딩 20번’의 과정만 실행되게 되는데 이를 통한 결과 값이 ‘admin’이 되어야 함을 알 수 있다.

Base64에서 출력값 문자의 특징은 ‘a-z, A-Z, 0-9, +, /’뿐이기 때문에(‘=’ 문자는 padding 연산의 결과값) 위의 특수문자들은 발생할 수 없고, 결국 디코딩 20번만 실행하게 됨을 알 수 있었다. 그리하여 ‘admin’이라는 문자를 base64로 20번 인코딩하여 cookie 값을 변조하면 문제를 풀 수 있었다. 스크립트만 읽고 바로 답이 나오는 문제였다.


2. 배운 점

  • base 64 인코딩 관련 복습

3. 참고 링크




'Study > WebHacking 공부하는 인디안' 카테고리의 다른 글

Webhacking.kr 17  (0) 2019.06.19
Webhacking.kr 26  (0) 2019.05.27
Webhacking.kr 4  (0) 2019.05.27
Webhacking.kr 15  (0) 2019.05.25
Webhacking.kr 24  (0) 2019.05.25
Comments