Webhacking.kr 4번 문제풀이

동스토리 ㅣ 2020. 6. 8. 16:20

반응형

4번 문제를 들어오게 되면 임의의 문자열, 패스워드 입력 폼, [view-source]를 볼 수 있습니다.

 

우선 소스 창을 열어 보도록 하겠습니다.

hash 값이 만들어진 형태를 보게 되면 10000000~99999999 중 랜덤 값과 "salt_for_you"를 붙여 값을 만들고 있는 것을 확인할 수 있습니다.

만들어진 해시 값을 SHA1방식으로 암호화하여 최종 해시 값을 만들고 있고 첫 화면의 임의의 문자열이 최종 해시 값이라는 것을 알게 되었습니다.

 

* SHA-1 : 160비트(40바이트) 암호화 해시 함수

* MD5 : 128비트(32바이트) 암호화 해시 함수

 

그렇다면 레인보우 테이블을 만들어 찾아낸 값에 "salt_for_you"를 붙이는 게 정답이라는 것을 알 수 있습니다.

 

* 레인보우 테이블 : 해시 함수(MD5, SHA-1 등)를 사용하여 만들 수 있는 값을 저장한 테이블

 

from hashlib import sha1

f = open("list.csv", 'w')

for i in range(10000000,99999999):

    result = str(i) + "salt_for_you"

    for j in range(0,500):
        result = sha1(result.encode('utf-8')).hexdigest()

    print(str(i) + ", "+ result)
    f.write(str(i) + ", " + result + "\n")

f.close()

 

10000000 ~ 99999999까지의 값을 생성하기 때문에 매우 오랜 시간이 걸리기 때문에 중간에 끊고 값을 찾아보는 게 좋을 것입니다.

 

나온 결과 값에서 첫 화면에 일치하는 문자열을 찾아 "salt_for_you"를 붙여 문제를 해결할 수 있습니다.

 

감사합니다.

 

 

 

반응형

'Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 6번 문제풀이  (0) 2020.06.13
Webhacking.kr 5번 문제풀이  (0) 2020.06.10
Webhacking.kr 3번 문제풀이  (0) 2020.05.30
Webhacking.kr 2번 문제풀이  (17) 2020.05.29
Webhacking.kr 1번 문제풀이  (0) 2020.05.24