웹 해킹 Webhacking 문제 풀이 4번
소스 분석
isset( $var );
$var가 설정되었는지 확인하고, 설정되었으면 TRUE, 설정되지 않았으면 FALSE를 반환합니다.
$hash = rand(10000000,99999999)."salt_for_you";
rand(시작숫자, 끝 숫자) --> 10000000 ~ 99999999 중에서 숫자 한개 뽑겠습니다. 예로10000001로하겠습니다
$hash = 10000001salt_for_you
$hash값을 500번 sha1로 암호화 합니다.
레인보우 테이블은 해시 함수(MD5, SHA-1, SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 왕창 저장한 표이다(출처: 나무 위키)
레인보우 테이블을 만들어 봅시다.
예시)hash = 10128152salt_for_you 500번 sha1인코딩 값 --> 36dd29b1e286fca764375b6b85cfeffc9e2d1bdc
10128152(숫자),36dd29b1e286fca764375b6b85cfeffc9e2d1bdc(500번 인코딩 값)
이런식으로 메인페이지 있는 sha1문자와 인코딩값을 비교해서 찾고 입력하면 정답입니다.
파이썬으로 코딩해서 레인보우테이블 작성했습니다.
from hashlib import sha1
f = open("sha1.csv","w")
for i in range(10000000,100000000):
password = str(i) + "salt_for_you"
for j in range(0,500):
password = sha1(password.encode('utf-8')).hexdigest()
print(str(i) + "," + password)
f.write(str(i) + ", " + password)
f.close()
만들어진 sha1에서 문제와 대응하는 해쉬값을 찾아서
숫자salt_for_you 입력하면 해결 할 수 있습니다
제가 레이보우 테이블 만들었습니다.
https://file.pizza/download/242nds8j
10000000 ~ 13545126
FilePizza - Your files, delivered.
Peer-to-peer file transfers in your web browser.
file.pizza
https://file.pizza/download/r2e3zo6g
13545126 ~15950731
FilePizza - Your files, delivered.
Peer-to-peer file transfers in your web browser.
file.pizza