Gae Ko's Blog

[webhacking.kr] challenges4 본문

웹해킹 /[webhacking.kr]

[webhacking.kr] challenges4

Gae Ko 2017. 10. 23. 00:46

문제를 보니 



음.... base64 인코딩한 결과처럼 보이는 문자열과 password를 입력하고 제출하는 버튼이 보인다.

음.... 소스코드를 보았다.


소스코드를 보니 입력값을 POST방식으로 index.php로 보낸다고한다. 그거 말고는 음...


일단 문제페이지에 보이는 문자열을 보니 =로 끝나있고, 영어 대소문자와 숫자들로 이루어진 걸 보아 base64로 인코딩한 결과라고 생각하여 base64 디코딩을 해보았다.  

한번 해보니 c4033bff94b567a190e33faa551f411caef444f2 라는 문자열이 나왔다. 

(등호가 맨 뒤에 없는 걸 통해 base64인코딩하기 전 원래의 문자임을 알 수 있었다.)

저게 답이라는 게 말도 안된다고 생각하지만 혹시나 하는 마음에 저 문자열을 문제페이지 입력값으로 넣어봤지만 실패! ㅎ


인코딩 종류, 암호화 등 구글링해보았지만... 모르겠다ㅜㅠ

결국 문제를 구글링하여 풀었다 ㅎㅎ


문자열을 무언가로 인코딩하여 40글자가 나온다면 이것은 sha-1 인코딩의 특징 이라는 것이 이 문제의 포인트였던거 같다!


c4033bff94b567a190e33faa551f411caef444f2 값이 sha-1로 암호화되어있음을 그 값이 40자리라는 것을 통해 추론할 수 있다. (40*4bit=160bit)

160bit의 해시함수 값은 sha-0과 sha-1뿐이라고 한다! 


c4033bff94b567a190e33faa551f411caef444f2 값을 sha-1디코딩해보면

(https://www.hashkiller.co.uk/sha1-decrypter.aspx 에서 함)


a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 값이 나오는데 이 또한 40자리이다. 그래서 또 sha-1디코딩해보면

test 라는 결과값이 나왔다!!


문제페이지의 입력창에 test를 입력하고 제출하면 



Clear !!!



[참고]

Base64의 대표적 특징

1_ 2진 데이터를 ASCII형태의 텍스트로 표현가능

2_ Web 인증 중 기본 인증에 사용

3_ 끝부분의 padding(==)으로 식별가능

4_ 64개의 문자를 사용 (영문 대, 소, 숫자, +-)

5_ 데이터를 6bit단위로 표현 


※  해시 함수(hash funtion)란 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시함수에 의해 얻어지는 값은 해시값, 해시코드 또는 해시 라고 한다. 해시함수는 암호학적 해쉬함수와 비암호학적 해쉬함수로 구분되곤 하는데 암호학적 해쉬함수의 종류로는 MD5, SHA계열 해쉬함수가 있으며 비암호하적 해쉬함수오는 CRC32등이 있다. 

- md5 인코딩 → 32글자(128bit)

- sha-0, sha-1 → 40글자(160bit) // sha-1은  sha-0의 변형 


- HTML <form>의 action 속성 : 양식이 제출될 때 양식 데이터를 보낼 위치를 지정 , <form acrion="URL">

- HTML <input>의 size 속성 : <input>요소의 가시적인 폭을 문자로 지정, <input size="숫자">



'웹해킹 > [webhacking.kr] ' 카테고리의 다른 글

[webhacking.kr] challenges24  (0) 2017.11.07
[webhacking.kr] challenges1  (0) 2017.10.23
[webhacking.kr] challenges6  (0) 2017.10.20
[webhacking.kr] challenges54  (0) 2017.10.16
[webhacking.kr] challenges20  (0) 2017.10.16