이번 문제는 암호화된 문자열이 출력되고 password 제출칸이 존재한다.
코드를 보면
brute force 방지용 sleep함수가 있고 10000000~99999999의 랜덤 한 숫자와 "salt_for_you" 문자열이 hash라는 변수에 초기화되고 그 값은 $_SESSION['chall4']에도 초기화된다.
그리고 hash값을 sha1으로 500번 암호화를 하여 출력된 값이 문제에서 나타난 문자열이다.
문제는 우리가 입력한 password값과 $_SESSION['chall4'] 즉, 초기 hash값과 같으면 문제가 풀린다. 그러면 우리는 문제에 나타나는 문자열을 500번 복호화하여야 되는데 sha1은 단방향 암호화로 복호하가 불가능하다.
처음에는 파이썬 코드로 암호화된 hash를 계속 출력하여 문제와 같은 문자열이 나올 때까지 찾아보려 했는데
너무 말도 안되게 오래 걸려서 포기했다ㅋㅋㅋㅋㅋ
그래서 생각한 방법이 10000000~20000000까지 약 10000000개의 암호화 문자열만 저장하여 페이지를 새로고침하여 해당되는 문자열이 나올 때까지 찾는 법이다. 확률상 1/10로 10번 정도 시도하면 나올 것이다.
import hashlib
f = open("123.txt",'w')
for i in range(10000000,20000000):
hash = f"{i}salt_for_you"
for j in range(0,500):
text = hash.encode('utf-8')
a = hashlib.new("sha1")
a.update(text)
result = a.hexdigest()
hash = result
f.write(f"{i} = {result}\n")
f.close
파이썬으로 암호화된 문자열을 메모장에 저장하고
이렇게 해당되는 문자열이 나올 때까지 반복하여 찾아본다.
10619140salt_for_you을 500번 암호화하면 7af7f54a97b1135bd7376c062e871e0fef097403가 나온다는 것이므로
10619140salt_for_you를 입력하면 문제가 풀린다.
'Web > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr Challenge old-9 문제 풀이 (0) | 2024.03.15 |
---|---|
Webhacking.kr Challenge old-45 문제 풀이 (0) | 2024.03.14 |
Webhacking.kr Challenge old-46 문제 풀이 (0) | 2024.03.05 |
Webhacking.kr Challenge old-43 문제 풀이 (0) | 2024.03.03 |
Webhacking.kr Challenge old-10 문제 풀이 (0) | 2024.02.27 |