SHA1 Hash를 크랙하는 문제다. 특정한 복호화 알고리즘이 존재하지 않기 때문에 가능한 모든 경우의 해시를 생성하고 비교하는 방식을 사용해야 한다. (Rainbow Table 생성)
개인적인 생각으로.. 웹해킹이랑 거리가 먼데 왜 여기에 있는지 모르겠다.
1
2
3
4
5
6
7
|
<?php
sleep(1); // anti brute force
if((isset($_SESSION['chall4'])) && ($_POST['key'] == $_SESSION['chall4'])) solve(4);
$hash = rand(10000000,99999999)."salt_for_you";
$_SESSION['chall4'] = $hash;
for($i=0;$i<500;$i++) $hash = sha1($hash);
?>
|
cs |
아래 코드는 python으로 모든 해시를 생성 후 실시간으로 검사한다. 메모리에 데이터가 상주하기 때문에 한 번 끄면 처음부터 해시를 다시 만들어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import hashlib
import threading
Memory = {}
def generate_hash(val) :
for i in range(1000000*val, 1000000*(val+1)) :
text = str(i)+'salt_for_you'
for _ in range(500) :
text = hashlib.sha1(text.encode()).hexdigest()
Memory[text] = i
t = threading.Thread(target=generate_hash, args=(0,))
t.start()
for i in range(1, 100) :
t = threading.Thread(target=generate_hash, args=(i,))
t.start()
while True :
search = input('\n\nHash: ')
print('Hash loaded: %d'%len(Memory))
try :
value = Memory[search]
print('SHA1(%dsalt_for_you) = '%value+search)
except KeyError :
print('Data not found.')
|
cs |
실행 예시..
Last Update: 20191107
'Wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr / Old 6 (0) | 2019.11.26 |
---|---|
webhacking.kr / Old 5 (0) | 2019.11.07 |
webhacking.kr / Old 3 (0) | 2019.11.07 |
webhacking.kr / Old 2 (0) | 2019.10.29 |
webhacking.kr / Old 1 (0) | 2019.10.29 |