<html>
<head>
<title>Challenge 19</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
<form>
id : <input type=text name=id value='admin' maxlength=5 size=5>
<input type=submit>
</form>
</body>
</html>

 

 

제출을 누르면

라는 문구가 나오고 몇 초 후에 원래 화면으로 돌아온다. 

admin이면 문제가 해결된다는 의미로 해석하고 문제에 접근해보자

 

* 돌아오는 이유

더보기

<meta> 태그의 http-equiv 속성

content 속성에 명시된 값에 대한 HTTP 헤더를 제공

 

http-equiv 속성은 HTTP 응답 헤더를 시뮬레이션할 때 사용 가능

만약 http-equiv 속성이 명시되어 있다면, 반드시 content 속성도 함께 명시되어야만 함

 

refresh : 해당 문서를 새로고침(refresh)할 시간 간격을 명시함

refresh 속성값은 사용자로부터 페이지에 대한 제어를 빼앗아오기 때문에 주의를 기울여 사용해야 함

ex) <meta http-equiv="refresh" content="30">

 

출처: http://tcpschool.com/html-tag-attrs/meta-http-equiv

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

다른 값을 집어넣어서 submit해보자. a를 제출해 보았다.

hello a라고 출력되고 logout이라는 버튼이 생겼다.

hello admin을 만들면 문제가 해결되는 것 같다.

 

hello a가 출력 되는 것 말고 무엇이 달라졌을까?

userid라는 이름의 쿠키가 생긴 것을 확인 할 수 있고 쿠키 값은 다음과 같았다.

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE%3D

이 쿠키 값은 몇 번을 해도 똑같다.

 

그렇다면 ad를 넣어보서 쿠키를 살펴보자.

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZA%3D%3D

빨간 글씨 부분이 새로 생겼다.

 

이번에는 adm

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFi

A%3D%3D가 초록색으로 표시된 D로 변하고 빨간 글씨 부분이 새로 생겼다.

 

이제 admi를 넣고 쿠키를 살펴보자

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE%3D

 

그럼 여기서 2가지 생각이 들 수 있다.

1. n을 뒤에 넣어서 admin을 만들자. n만 따로 쿠키를 얻어서 뒤에 붙여 넣으면 되네

2. adm을 하는 과정에서 A%3D%3D가 D로 변했다. 뭔가 있을 거야

 

1 번 부터 해보자.

n을 입력하면 N2I4Yjk2NWFkNGJjYTBlNDFhYjUxZGU3YjMxMzYzYTE%3D

뒤에 넣고 새로 고침을 해봐도 hello admi가 출력된다 -> 실패

 

그럼 2번 뭔가가 있다. 뒤에서 부터 접근해 보자.

i

ODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE%3D

in

ODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ%3D%3D

n 부분이 변했다. 이번에는 adm과 in을 합쳐서 제출해 보자(빨강-adm, 파랑-in)

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ%3D%3D

 

hello admin이 뜨면서 해결!! 일줄 알았으나 왜 이런 결과가 나오는지 알아야 한다.

 

%3D이 친구에 주목하자. %3D는 =기호를 16진수로 인코딩한 것이다.

a를 입력하면 아래와 같은 결과가 나오고 끝에 %3D(=)가 붙어 있는것을 확인할 수 있다. 

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE%3D

 

코드의 마지막에 = 또는 == 문자 가 포함? 이건 Base64 인코딩의 특징!

(몰랐다면 이번 기회에 알아 두자)

 

*Base64 인코딩란?

더보기

8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념

전자 메일을 통한 이진 데이터 전송 등에 많이 쓰이고 있으며 Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 존재

 

출처: https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464

 

베이스64 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 ��

ko.wikipedia.org

 

 

Base64 인코딩이 되었다면 디코딩을 해서 a가 나와야 한다. 한번 확인해보자.

https://www.base64decode.org/

 

Base64 Decode and Encode - Online

Decode from Base64 or Encode to Base64 with advanced formatting options. Enter our site for an easy-to-use online tool.

www.base64decode.org

이 사이트에서 MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE=을 디코딩 해보면

0cc175b9c0f1b6a831c399e269772661 가 나온다. 

우리가 원하는 값인 a가 나오지 않는 것을 보면 다른 방식으로 한 번 더 인코딩 되었다고 생각해 볼 수 있다.

 

흠... 역시 모를 때는 구글 형한테 물어봐야 한다.

0cc175b9c0f1b6a831c399e269772661를 google에 넣고 검색해보자.

 

MD5? 이런게 나온다

https://md5.gromweb.com/?md5=0cc175b9c0f1b6a831c399e269772661

 

MD5 reverse for 0cc175b9c0f1b6a831c399e269772661

The MD5 hash: 0cc175b9c0f1b6a831c399e269772661 was succesfully reversed into the string: a Feel free to provide some other MD5 hashes you would like to try to reverse. Reverse a MD5 hash You can generate the MD5 hash of the string which was just reversed t

md5.gromweb.com

* MD5(Message-Digest algorithm 5)란?

정리하면 MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE=를 base64 디코딩을 한 결과인0cc175b9c0f1b6a831c399e269772661를 MD5 형식으로 처리하면 a가 나온다는 것이다.

 

쿠키 값은 다음과 같은 과정을 거쳐서 출력된 것이다.

a입력 -> md5 처리 -> 0cc175b9c0f1b6a831c399e269772661 -> base64인코딩 ->쿠키값

 

자 그럼 admin을 md5 해시 처리를 해보자

21232F297A57A5A743894A0E4A801FC3

이걸 base64인코딩을 하면 MjEyMzJGMjk3QTU3QTVBNzQzODk0QTBFNEE4MDFGQzM=

우리가 앞서 구한 값과 다른 것을 알 수 있다.

이를 통해 앞에서 본 것 처럼 admin을 a d m i n  처럼 각 문자별로 구해서 합쳐줘야 원하는 값을 얻을 수 있음을 확인할 수 있다.

 

우리가 앞서 고민했던 1번 과정을 다시 한 번 해보자

admi을 입력해서 얻은 쿠키값을 md5 처리를 하면 다음과 같다.

0cc175b9c0f1b6a831c399e2697726618277e0910d750195b448797616e091ad6f8f57715090da2632453988d9a1501b865c0c0b4ab0e063e5caa3387c1a8741

n을 md5 처리 하면 7b8b965ad4bca0e41ab51de7b31363a1 이므로 이 둘을 합쳐서 base64 인코딩을 해보자.

 

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==

 

해결!! 

'Wargame 풀이 > webhacking.kr (웹해킹)' 카테고리의 다른 글

old - 26  (0) 2020.08.17
old - 16  (0) 2020.08.16
old - 6  (0) 2020.08.16
old - 17  (0) 2020.08.11
old - 10  (0) 2020.08.09

+ Recent posts