본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 4번

메인화면
소스코드

SESSION['chall4']의 값을 맞추는건데

SESSION['chall4']의 값은 변수 hash의 값

$hash는 10000000~99999999+salt_for_you

문자열 결합으로 되어있고

나온값을 sha1로 500번 암호화 한것이

SESSION['chall4']의 값으로 들어간다

 

그래서 메인화면의 해쉬값을보고

SESSION['chall4']의 값을 맞추면 클리어

 

나도 이거 어떻게 푸는지 몰랐는데

홈페이지 메인화면에 rubiya님이

레인보우 테이블이용하는 거라 하셔서 풀었다

 

레인보우 테이블이란 

특정한 HASH 결과가 어떤 문자열로부터 매핑되었는지 알 수 있게

HASH 결과들을 축적시킨 데이터(사전)을 만들어 둔 것을 말함

 

10000000salt_for_you --500sha1--> c42ec2443c30168fea2558594c3adc922360692c

10000001salt_for_you --500sha1--> 67c22ee91b8fde93cb2eb546a8dbe5f5817cb121

10000002salt_for_you --500sha1--> 113077af9ce10b8dee2c47d2bb33f75a466fc0b4

.

.

.

이런식으로 해서

99999999salt_for_you 까지 한것을 테이블화 하는것

 

import hashlib

def sha(no):
    data = f"{no}salt_for_you"
    for i in range(0, 500):
        data = hashlib.sha1(data.encode('utf-8')).hexdigest()
    return data

f = open("dictionary.txt","w")
for i in range (10000000, 99999999):
    f.write(f"{i}: {sha(i)}\n")
f.close()

CPU겁나 잡아먹음

난 15000000까지만 하고 차라리

웹에서 그 안에서 값이 나오길 새로고침을 하며 하는 방법으로 시간을 좀 줄였다

'Wargame, CTF > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 2번  (0) 2020.01.02
Webhacking.kr 50번  (0) 2020.01.02
Webhacking.kr 8번  (0) 2019.12.27
Webhacking.kr 55번  (0) 2019.12.27
Webhacking.kr 29번  (0) 2019.12.20