반응형
webhacking.kr old 04번 문제풀이(Writeup)
문제를 들어가면 위와 같이 출력된다. 문제 사이트에 view-source가 있으니 힌트를 보자.
먼저 brute force가 막혀있는 모습이 보인다. 문제에서 사용하지 말라는 것 보니 쓰지 말자.
이후 key값을 입력해서 key값이 SESSION값과 동일하면 해결되는 문제이다.
그 과정에서 hash값이 랜덤으로 생성되고, 생성된 값과 'salt_for_you'가 합쳐진 값이 SESSION에 들어간다.
그렇다면 이번 문제의 해결방법은 똑같이 hash값을 랜덤으로 생성하고 'salt_for_you'를 붙인 후 sha1로 암호화를 500번하고 난 값을 사이트에 나오는 값과 비교하면 될것으로 보인다.
from hashlib import sha1
import random
flag = 1
while(flag == 1):
hash_1 = str(random.randint(10000000,99999999))+"salt_for_you"
temp = hash_1
for i in range(0,500):
hash_1 = sha1(hash_1.encode('utf-8')).hexdigest()
if(hash_1 == "d81bebf0e46e5b0aac8b7f3748618507e1fa9723"):
print(temp)
flag=0
처음 암호 인코딩 코드를 작성하다보니 공부할 부분이 생각보다 많아서 많은 코드를 참고했다. 그런데 이 코드가 최선이라고 생각했는데, 너무 오래걸린다. 그래서 레인보우 테이블을 만들어서 풀었다.
from hashlib import sha1
import hashlib
f = open("webhacking_kr.txt", 'w')
for i in range(10000000,20000000):
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()
webhacking_kr.txt를 만들어서 여기에 나올 수 있는 해시값을 저장했다. 그리고 F5를 누르면서 해당하는 해시값을 찾았다.
위에 과정을 하는데 3시간 넘게 걸린것 같다. 보람보단 고생이 느껴지는 문제다.
참고사이트
https://docs.python.org/3/library/hashlib.html
728x90
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 05번 문제풀이(Writeup). 디렉터리 리스팅 취약점 설명 및 응용 (0) | 2022.10.09 |
---|---|
webhacking.kr old 22번 문제풀이(Writeup) (0) | 2022.10.08 |
webhacking.kr old 21번 문제풀이(Writeup) Blind Sql Injection (0) | 2022.10.06 |
webhacking.kr old 23번 문제풀이(Writeup) (0) | 2022.10.05 |
webhacking.kr old 20번 문제풀이(Writeup) (0) | 2022.10.04 |