ReIzEi 2023. 4. 7. 14:56

들어오면 버튼이 있다 고로 누른다

 

 

 

 

물론 안된다

 

 

 

admin이 아니면 guest가 국룰이다, 입력하니까 뭔가 됬다

 

 

 

 

 

 

보통 이런문제는 쿠키를 봐야되죠, userid에 수상한 문자열 발★견

 

 

 

 

딱히 뭘 넣는 상관없이 다 되는듯 하다

 

 

 

 

같은 문자열을 넣으면 같은 문자열이 userid에 삽입되고

 

guest를 넣고 a의 userid로 바꿔넣었더니 그대로 바뀌는걸 확인했다

 

 

 

 

 

 

 

그리고 잠깐동안의 검색 후 충격적인 사실을 알아냈다

 

%3D 가 '=' 인데 이게 끝에 붙으면 base64 인코딩된 문자열이라는 것이었다

 

a를 decode 해보자

 

 

 

 

매우 hash스러운 값이 나온다, 문제는 이게 무슨 해시함수로 만들어졌냐는 것 이다

 

그리고 또 다시 3분간의 마라톤 검색 후 다음과 같은 정보를 얻을 수 있었다

 

md5 -> 128비트 -> 2의 4승이 16진수이므로, 4로 나누면 32. 16진수 32자리.

sha-1 -> 160비트 -> 마찬가지로 계산하면 16진수 40자리.

sha-256 -> 256비트  -> 마찬가지로 계산하면 16진수 64자리.

 

고로 32자리인 userid는 md5 해시된 후 base64 인코딩 되서 만들어짐을 알 수 있었다

 

(다른분의 블로그에서 돚거해온 꿀팁, 같은 글을 보면 감사하다고 댓글을 달아드리자)

 

 

이제 userid가 만들어지는 과정를 알았으니 우리는 원하는 userid를 마음대로 만들 수 있다

md5hash -> base64.encode 

 

admin을 md5 해시해준후

 

 

 

인코딩해준뒤 발사한다

 

 

 

 

아 ㅅㅂ 왜 안돼

 

 

 

 

 

고민하던중 문득 떠올랐다

 

"이상한점이 있다"

 

해시함수는 몇글자든 고정된 길이의 문자열로 출력해준다

 

하지만 userid로 나온 쿠키값들은 글자수에따라 값이 길어졌다

 

이는 해시 특성상 말이안되는 결과

 

 

 

시험으로 aa를 넣어봤다

 

 

 

그리고 userid 를 디코딩 해준뒤 발견한 사실

 

여러글자를 넣어도 한 글짜식 해싱과정을 거쳐서 다 붙인 뒤 base64 인코딩을 해준것

 

위를 보면 0cc로 시작하는 똑같은 문자열(a)이 두개가 붙어있다 

 

이제 진짜로 어떻게 만드는지 알았으니 제대로 만들어보자

 

 

 

 

 

 

 

admin 다 만든뒤 붙여주자 

 

그리고 인코딩 해준뒤 userid에 넣으면 크리아

 

 

 

최근 푼 문제들 중 제일 많은 검색을 필요로 하는 문제였던 것 같다