본문 바로가기

webhacking.kr문제풀이

LEVEL 4

공부하기 싫을 때 진로를 명분으로 온 나의 도피처...이다.

 

풀이하려고 했으나 항상 실패하는 문제를 이제 도전해보려 한다.

 

**해시와 레인보우 함수는 다음 블로그를 참조해보자. 풀기 위해선 알아야한다.

https://clanguageconquerer.tistory.com/54

 

해시와 레인보우 테이블

webhacking.kr의 문제중 4단계에 있는 문제가 있다. 페이지에 주어진 해시화 된 암호문을 평문으로 바꾸고 그것을 입력하면 문제가 해결되는 단계이다. 이 문제를 풀면서 해시를 접하게 되었고, 해

clanguageconquerer.tistory.com

우리는 php코드만 보면 된다.

php코드를 통해서 random으로 10000000부터 99999999까지의 수 중에서 무작위로 하나가 해시화 된다는것을 알 수 있다. 이때 해시 함수는 sha1인것을 알 수있다.

이때 우리가 메인 페이지에 입력하는 숫자+'salt_for_you'가 틀릴 경우 혹은 페이지를 나갔다 들어오는 경우(새로고침) 초기화 된다(해시 값이 바뀌어버린다.)는 문제가.. 있다. 무작위 대입은 문제가 있을 것 같다

 

이를 풀기 위해 python코드를 작성해준다.

import hashlib

a=input("해시 값을 입력해주세요: ")
for i in range(10000000,999999999+1):
    pw=(str(i)+"salt_for_you")
    for j in range(1000):
        pw=hashlib.sha1(pw.encode()).hexdigest()
    print('process'+str(i))
    if(pw==a):
        print('FIND IT : '+str(i)+"salt_for_you")
        break

이걸 계속 돌리다보면 나오긴 할텐데.....

문제는 시간이 꽤나 걸린다는 것이다. 특히 큰 숫자가 걸릴 경우엔...ㄷㄷ

 

이것보다 좋은 알고리즘을 찾지 못한 나의 뇌를 탓하며... 포스팅을 마친다.

시간이 많다면 비둘기집 원리를 이용해서 하나씩 해시 값을 저장한 다음에 비교를 해보는것도 나쁘지 않을지도?

'webhacking.kr문제풀이' 카테고리의 다른 글

11단계(old)  (2) 2022.03.27
10번 문제풀이  (0) 2022.03.06
17번 (old)문제풀이  (0) 2022.03.01
1번 문제풀이(old)  (0) 2022.02.20