One_Blog

webhacking.kr old4 본문

웹해킹

webhacking.kr old4

0xOne 2024. 1. 16. 21:15
728x90

문제가 일단 상당히 당황스럽다.

 

처음 접속하면 이상한 해쉬값만 보여준다.

일단 대강 분석해보자면..

 

sleep 함수는 브포 방지,

 

if문은 솔브를 확인하는 것같은데.. key를 인자값으로 받는다.

 

이때 key가 $_SESSION['chall4']랑 같아야 한다.

 

 $_SESSION['chall4']값은 확인이 안되는데, 값을 생성하는 과정은 확인이 된다.

 

대충 1000000~9999999 사이에서 수 하나 고른 후, "salt_for_you"라는 문자열과 합친 후

 

sha1을 500번 돌려서 값을 만들어낸다.

 

처음엔 sha1 hash collision과 같은 부류로 접근하는 문젠가 싶었는데.. 라이트업 찾아보니 

 

그냥 무지성으로 레인보우 테이블 만들어서 값을 찾는 문제였다.

 

아니...1000000~9999999 브포는 ..까진 인정하겠지만..

 

salt_for_you와 합친 후 sha1을 500번...??

 

말이 안되는 수의 브포에 다른 풀이가 있나 더 찾아봤지만..

 

그런 풀이는 없었고 결국 울며 겨자먹기로 브포를 돌려 레인보우 테이블을 만들기 시작했다.

 

다른 풀이에서 아주 조금 더 빠른 방법이 있어 첨부하자면,

 

1000000-2000000 자리까지 해쉬 돌리고, 뒤에 8자리만 짤라 저장하는 방법이다.

 

그렇게 테이블 만든 후 사이트에서 해쉬 값 새로 받아주면서 매칭하는 값 찾는 방법이다.

 

from hashlib import sha1
with open('webhacking4.txt', 'w') as f:
    for i in range(10000000,20000000):
        print(i, "success")
        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()

 

코드 이런식으로 짜서 해쉬 저장..할려 했는데

 

해당 문제를 푼 사람 중에 테이블 업로드 해놓은 분 안계신가해서 찾아봤더니

 

https://sean.tistory.com/247

 

[webhacking.kr] old-4

https://drive.google.com/file/d/1dRCuDpfTPNPx8wKhuXh0GSCh2w6SiBo_/view?usp=sharing Password [view-source] 분석 위의 소스 코드 중 아래의 코드 부분이 중요한 부분이다. $hash = rand(10000000,99999999)."salt_for_you"; $_SESSION['chall4']

sean.tistory.com

 

해당 글에 테이블이 업로드 되어 있었다.

 

글쓴이님(Sean(Slay))사랑합니다 ㅜㅜ

 

 

gg