본문 바로가기

Developing/Hacking

Webhacking 4번 문제풀이

Webhacking.kr 사이트가 리뉴얼되면서 일부 문제가 바뀌었다.

 

대표적으로 4번이 그 예시인데, 한번 살펴보자.

 

무엇인가 해시로 추정이 된다. 한번 소스를 보자.

 

 

10000000부터 99999999사이 중 숫자 하나가 지정된다. 예를 들어 12345678이라고 하자.

이를 "12345678salt_for_you" 문자열로 만들고, SHA1 방식으로 500번 암호화한다.

 

그 해시 값을 보고, 문자열을 맞추면 되는 것이다.

 

...

 

아마 레인보우 테이블을 사용하는 것이라 생각한다,

 

레인보우 테이블은 해시 함수(MD5SHA-1SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 왕창 저장한 표이다. 물론 해시 함수는 입력이 무제한이라서 모든 내용을 넣는 게 아니고, 이를테면 영어 소문자와 숫자 조합으로 일정 길이까지의 모든 문자열에 대해서 계산한다거나 하는 것이다. 이걸 그대로 저장하면 거듭제곱의 위력을 확실하게 체험할 수 있기 때문에 (문자열에 한 글자 추가하면 아무리 적어도 30배, 문자 조합이 많으면 200배 정도로 커진다!) 적절한 가공 과정을 거친다... -나무위키

 

그러면 만들면 된다.

 

* print 구문은 필요없다.

* 파일 열기는 VSCode를 추천한다.

 

위에 범위를 잘 조절해서, 1천만부터 1억까지 생성하지 말고, 반정도나 1/4정도만 생성해서 때려맞추는게 빠르다.

전부 생성한다면 약 4.5기가 정도의 파일이 생성되며, 형식은 (숫자, 해시값) 으로 생성된다.

 

따라서 값을 찾아서 답 제출란에 "12345678salt_for_you" 형식으로 입력하면 클리어할 수 있다.

'Developing > Hacking' 카테고리의 다른 글

Webhacking 31번 문제풀이  (0) 2020.01.21