보안 공부/webhacking.kr

webhacking.kr 19번 풀이

sh1256 2021. 12. 13. 13:56
728x90

첫화면

id를 제출하는 칸이 보이네요

일단 admin으로 제출해 봅시다. 

 

id= admin 결과

'you ae not admin'이라고 뜨네요.

 

가장 만만한 guest로 로그인 해봅시다. 

id=guest 결과

'hello guest'가 뜹니다. 

그리고 다른 걸 시도하려고 logout을 눌러봐도..

 로그아웃이 안되네요 ㅎ하하

처음에 내 컴퓨터가 이상한 줄 알았잫ㅎ...

그래서 일단 소스코드를 보았지만 건질 게 없었고,

(?logout=1이 입력되면 로그아웃이라는 걸 알았다.)

쿠키에서 건질 게 있었다. 

바로 

userid cookie

userid 라는 쿠키이다. 

userid쿠키를 0으로 설정하면 로그아웃을 할 수 있다. 

로그아웃 쿠키 설정

 

그리고 여기서 Base64 라는 인코딩 방식에 대해 알아야 한다. 

 

암호화된 문자를 보고 Base64라고 알아 차리기 위해선 Base64의 암호화 방식을 알아야 한다.

자세한 건 -->https://pks2974.medium.com/base-64-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0-da50fdfc49d2

 

Base 64 간단 정리하기

Base 64 개념을 간단히 정리해보고자 한다.

pks2974.medium.com

즉, 암호화된 문장의 끝에 %3D가 붙어 있는 것 같으며 base64로 암호화 한건 아닌지 시도해 보아야 한다. 

이전의 쿠키를 보면 %3D%3D로 마지막에 채워진 것을 알 수 있다.

따라서 쿠키는 무언가의 값을 base64로 암호화 한것이다. 

 

확인을 위해 id를 1로 제출해보자. 

userid 값

이 쿠키값으로 base64 디코딩을 해봅시다. 

마지막 %3D는 '='로 바꾼 후 디코딩합니다. 

디코딩 사이트 --> http://www.hipenpal.com/tool/base64-encode-and-decode-in-korean.php

base64 디코딩 결과

바로 알아볼 수 있는 값이 나올 거라고 생각했는데 또 암호문이 나온다. 

이런 암호문을 낼 수 있는 암호 알고리즘을 생각하다가 md5가 떠올랐다. 

md5 설명 --> https://smilek1225.tistory.com/2

 

1-(2) [암호] MD5 암호화 소개 및 코드정리(JAVA 코드)

안녕하세요! 암호화 두번째 'MD5'암호화를 정리해볼까 합니다. 이전 AES암호화를 설명하면서 돌아가는 원리를 설명해보면 어떨까 생각을 해봤는데 원리보다 조금 더 실무에 맞는 포스트로 정리하

smilek1225.tistory.com

 

base 64디코딩 결과를 가지고 md5로 복호화하자

md5는 복호화가 어렵지만 자주쓰는 테이블을 이용해 복호화 하기도 한다. 

md5 복호화 사이트 --> https://md5.web-max.ca/index.php#enter

md5 복호화 결과

md5 복호화 결과는 1이였다. 

 

 즉 쿠키 값은 

입력값 --> md5암호화 --> base64암호화 --> userid쿠키에 저장

로 이루어지는 것이다. 

 

그러면 입력값:admin 에 해당하는 userid 쿠키 값을 알게 되면 이 문제를 해결할 수 있다. 

 

그래서 admin을 그대로 해 보았는데 error 가 발생한다. 

id=11로 시도한 결과

11은 1, 1따로따로 md5암호화를 해서 이어붙인 것을 base64로 암호화한 것이다. 

11입력시 userid 쿠키값을 base64로 디코딩 한 결과

 

따라서 a, d, m, i, n을 각각 md5암호화 한 후 이어붙인 것을 base64로 인코딩 해야 한다. 

<md5 암호화>

a: 0cc175b9c0f1b6a831c399e269772661

d: 8277e0910d750195b448797616e091ad

m: 6f8f57715090da2632453988d9a1501b

i: 865c0c0b4ab0e063e5caa3387c1a8741

n: 7b8b965ad4bca0e41ab51de7b31363a1

 

(base64는 대소문자 구분을 하기 때문에 이전의 예시에 따라 md5암호화를 할 때 소문자로 인코딩하자. )

 

<이어 붙인 것>

0cc175b9c0f1b6a831c399e2697726618277e0910d750195b448797616e091ad6f8f57715090da2632453988d9a1501b865c0c0b4ab0e063e5caa3387c1a87417b8b965ad4bca0e41ab51de7b31363a1

 

<base64 암호화>

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==

쿠키에 저장
성공

'보안 공부 > webhacking.kr' 카테고리의 다른 글

webhacking.kr 42번 풀이  (0) 2021.12.14
webhacking.kr 20번 풀이  (0) 2021.12.13
webhacking.kr 58번 풀이  (0) 2021.12.13
webhacking.kr 23번 풀이  (0) 2021.12.07
webhacking.kr 54번 풀이  (0) 2021.12.07