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 |