티스토리 뷰

일곱번째 글.

문제

여기서 이대로 제출 버튼을 누르면 

 

 

이렇게 뜨고 다시 돌아온다.

 

 

이번에는 a를 넣고 제출을 눌러보겠다.

 

이렇게 hello a라고 나오고 아까와는 다르게 다시 초기화면으로 돌아가지 않았으며 

logout버튼을 눌러도 아무런 동작을 하지 않았다.

 

 

빠르게 쿠기값을 확인해 봤더니 userid에 이렇게 있었다.

참고로 %3D는 '=' 과 같다. 여기서 base64 인코딩임을 알 수 있었다.

 

 

 

디코딩을 해보면 md5 인코딩 된 값을 얻을 수 있었고

이값을 복호화하면 'a' 라는 값이 나왔다.

 

여기서 'aa'를 넣고 똑같이 base64 디코딩을 해주면

0cc175b9c0f1b6a831c399e269772661 0cc175b9c0f1b6a831c399e269772661

이렇게 나온다.

여기서 눈치가 빠른사람들은 'admin' 에서 알파벳 하나하나 md5 인코딩을 한 뒤 

이어붙여서 base64 인코딩을 했을 것이다.

하지만 나는 admi 까지 넣고 쿠키값을 얻어내고 올바른 n의 base64 인코딩 값을 얻기 위해서

admip adbep(임의 문자열) 이렇게 글자 수가 같으면 p의 인코딩값은 같다는 결론을 얻고 난 뒤에 

adben이 base64 인코딩 된값의 마지막 32글자를 admi의 base64 인코딩 값에 붙여서 문제를 풀 수 있었다.

한마디로 엄청난 뻘짓을 한것이다(다음부턴 이렇게 하지말자...)

 

아래는 파이썬코드로 admin에 해당하는 쿠기값을 얻어내었다.

더보기
import base64
import hashlib
str = 'admin'
md5 =''
for i in range(0, 5) :
    char = str[i]
    result = hashlib.md5(char.encode()).hexdigest()
    md5 +=result
    print(result, char)

b = md5.encode("UTF-8") ## base64 인코드 및 디코드함수는 모두 바이트형 객체를 필요 따라서 문자열을 UTF-8인코딩
encode_result = base64.b64encode(b)
print(encode_result)

 

 

 

이렇게 넣어주고 admin을 제출하면

 

 

이렇게 풀리는 것을 확인할 수 있다.

'writeup > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] 33번 문제(old)  (0) 2020.08.07
[Webhacking.kr] 32번 문제(old)  (0) 2020.08.06
[Webhacking.kr] 22번 문제(old)  (0) 2020.08.05
[Webhacking.kr] 21번 문제(old)  (0) 2020.08.04
[Webhacking.kr] 12번 문제(old)  (0) 2020.07.29