-
Challenge 19웹해킹/Webhacking.kr 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에 넣으면 크리아
최근 푼 문제들 중 제일 많은 검색을 필요로 하는 문제였던 것 같다
'웹해킹 > Webhacking.kr' 카테고리의 다른 글
Challenge 42 (0) 2023.04.14 Challenge 7 (0) 2023.04.12 Challenge 58 (0) 2023.04.06 Challenge 32 (0) 2023.04.06 Challenge 11 (0) 2023.04.05