본문으로 바로가기

webhacking.kr / Old 4

category Wargame/webhacking.kr 2019. 11. 7. 13:55

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
 
= threading.Thread(target=generate_hash, args=(0,))
t.start()
 
for i in range(1100) :
    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