티스토리 뷰



먼저 점수가 높지 않은 문제라 SQL Injection 같이 어려운 문제는 아닐 꺼라고 생각했다.

힌트로 주어진 문자열 뒤가 "==" 식으로 끝나는데, 웹 쪽을 좀 해본 사람은 base64 인코딩이라고 직감할 수 있을거다.



base64란?

https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464


쉽게 말하면 바이너리 데이터를 일정한 규칙을 이용해서 ASCII로만 이루어진 문자열로 변환하는거다.

메모장으로 exe파일을 열면 이상한 글자로 깨져버리는걸 base64로 인코딩해서 안전하게 전송, 저장할 수 있도록 하는 거라고 생각하면 될듯 하다.


도구 : https://ostermiller.org/calc/encode.html

풀면 "c4033bff94b567a190e33faa551f411caef444f2", 0~9 와 a~f로 이루어진 Hex 문자열이 나타난다.



Hex 문자열은?

아까와 같이 바이너리 데이터를 이번에는 일정한 규칙을 이용하는게 아니라, 1바이트를 16진수로 변환해서 그 값을 일렬로 쭉 내열해 놓은 것이다.

바이트로 변환한 후 utf-8이나 euc-kr로 복호화 해 봤지만 실패. 해쉬 값일 거라는 추측을 해 보았고, 찾아보니 글자수가 40개인 (바이트로는 20bytes) 해쉬 방식은 SHA-1가 있었다.


본래 해쉬 암호화 방식은 어떠한 데이터를 해쉬 처리했을 때, 각각 다른 데이터끼리는 같은 해쉬 값이 나오지 않아 데이터 무결성에 이용하고,

단방향 암호화 방식으로 암호화 전 데이터를 알 수 없지만,

브루트 포스 공격법으로 이전 데이터를 알아낼 수 있다.


https://en.wikipedia.org/wiki/Password_cracking


모든 데이터의 해시값을 하나 씩 저장해 찾고자 하는 원본에서 나온 해시값과 비교하게 되는데, 인터넷에서는 이러한 서비스를 무료로 제공하는 곳이 많다.


https://hashkiller.co.uk/md5-decrypter.aspx





한번 돌리면 "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" 이런 정체모를 값이 나오는데 당황할 필요 없다. 해시 암호화를 2번 수행한 것이니, 다시 한번 더 이 값으로 원본 값을 찾으면

(서명에 정답이 가려졌다. 정답은 "test")


정답이 툭 튀어나온다.







'Web - Security > * webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 6번 문제 - 100p  (0) 2016.04.15
[webhacking.kr] 5번 문제 - 300p  (0) 2016.04.15
[webhacking.kr] 1번 문제 - 200p  (0) 2016.04.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함