본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 04번 문제풀이(Writeup)

반응형

webhacking.kr old 04번 문제풀이(Writeup)

old 04번 문제풀이 1

문제를 들어가면 위와 같이 출력된다. 문제 사이트에 view-source가 있으니 힌트를 보자.

 

 

old 04번 문제풀이 2

먼저 brute force가 막혀있는 모습이 보인다. 문제에서 사용하지 말라는 것 보니 쓰지 말자.

이후 key값을 입력해서 key값이 SESSION값과 동일하면 해결되는 문제이다. 

 

그 과정에서 hash값이 랜덤으로 생성되고, 생성된 값과 'salt_for_you'가 합쳐진 값이 SESSION에 들어간다.

그렇다면 이번 문제의 해결방법은 똑같이 hash값을 랜덤으로 생성하고 'salt_for_you'를 붙인 후 sha1로 암호화를 500번하고 난 값을 사이트에 나오는 값과 비교하면 될것으로 보인다.

 

 

from hashlib import sha1
import random

flag = 1
while(flag == 1):
    hash_1 = str(random.randint(10000000,99999999))+"salt_for_you"
    temp = hash_1
    for i in range(0,500):
        hash_1 = sha1(hash_1.encode('utf-8')).hexdigest()
    
    if(hash_1 == "d81bebf0e46e5b0aac8b7f3748618507e1fa9723"):
        print(temp)
        flag=0

처음 암호 인코딩 코드를 작성하다보니 공부할 부분이 생각보다 많아서 많은 코드를 참고했다. 그런데 이 코드가 최선이라고 생각했는데, 너무 오래걸린다. 그래서 레인보우 테이블을 만들어서 풀었다.

 

 

from hashlib import sha1
import hashlib

f = open("webhacking_kr.txt", 'w')
for i in range(10000000,20000000):
    hash = str(i)+"salt_for_you"
    for j in range(0,500):
        hash = sha1(hash.encode('utf-8')).hexdigest()
    
    f.write(str(i) + " : " + hash[:8] + "\n")

f.close()

webhacking_kr.txt를 만들어서 여기에 나올 수 있는 해시값을 저장했다. 그리고 F5를 누르면서 해당하는 해시값을 찾았다.

 

 

 

 

old 04번 문제풀이 4

위에 과정을 하는데 3시간 넘게 걸린것 같다. 보람보단 고생이 느껴지는 문제다.

 

 

 

 

참고사이트

https://docs.python.org/3/library/hashlib.html

 

 

728x90