Post

Webhacking.kr - web04

web04



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);
?>






Solution



문제 풀이 요건은 chall4 세션이 존재해야 하며 입력값과 chall4 세션 값이 동일해야 함.

화면에 나오는 값은 chall4의 값(숫자salt_For_you)을 500번 sha1으로 해쉬한 값임.

이 문제는 시간상 그냥 이런 식으로 푼다는 것만 적었음.


화면에 나온 해쉬 값은 71c1cfbf21088c2da659e3540c14eb0028993add으로 71c1cfbf21088c2da659e3540c14eb0028993add은 chall4를 500번 sha1 해쉬한 값임.

chall4 값을 찾으려면 일일이 다 비교를 해보거나 10000000salt_for_you ~ 99999999salt_for_you를 500번씩 sha1 해쉬한 값을 저장한 테이블을 만들어서 풀어야 함..

일일이 비교하는 코드는 다음과 같음.


1
2
3
4
5
6
7
8
9
10
11
import hashlib

for i in range(10000000, 100000000) :
    byte = str(i)+"salt_for_you"
    hash=byte
    for j in range(1,500) :
        hash = hash.encode()
        hash = hashlib.sha1(hash).hexdigest()
    if(hash == "71c1cfbf21088c2da659e3540c14eb0028993add") :
        print("key : ",hash)
        break






This post is licensed under CC BY 4.0 by the author.