본문 바로가기

모의해킹/Dreamhack

[wargame.kr] crack crack crack it

728x90

.htaccess 을 크랙하라는데,,, bruteforce을 이용한다?!

(해당 문제는 참고를 하여 문제를 풀었습니다..!)

문제 정보

G4HeulB 문자열로 시작하는 글자를 찾는거 같다,,,!

 

.htpasswd 을 다운 받으면 아래 문구가 적혀있다..

blueh4g:$1$VH6/fWZp$mWttF/M8/X8s8RgZ.pWrS/

.htpasswd 파일 포맷을 정리해보자

blueh4g : 계정 이름

$1 : 해시 알고리즘 종류 

($1   //MD5 알고리즘 (128bit), $5  //SHA-256(256bit), $6 //SHA-512(512bit) )

$VH6/fWZp : 솔트 값

$mWttF/M8/X8s8RgZ.pWrS/ : 해시된 패스워드 

이를 이용해 브루트포스 공격을 통해 주어진 해시된 패스워드값이 나오는 평문 패스워드를 찾는것이다.!!

 

* 파이썬의 hashlib 는 사용 불가,, 리눅스의 MD5해시값을 구할 수 없기 때문에 -> passlib.hash 라이브러리 사용

import string
from itertools import product


str = string.ascii_letters + string.digits

for len in range(1, 10):
    to_attempt = product(str, repeat=len)
    for attempt in to_attempt:
        brute = "".join(attempt)
        print(brute)

기본적인 brute Force 문자열 생성하는 코드이다.

이 코드를 응용해서 사용하면 된다.

 

from passlib.hash import md5_crypt // pip3 install passlib 설치해야함
import string
from itertools import product

passwd_section = "G4HeulB"
salt = "kfi/mcxb"
hash_passwd = "LKczByXp5WCmmZX/Vjn.E1"

str = string.ascii_letters + string.digits

for len in range(1, 10):
    to_attempt = product(str, repeat=len)
    for attempt in to_attempt:
        brute = "".join(attempt) // Brute Force 조합 만든거 
		// 여기부터 가능한 문자열의 조합을 하나씩 대입하여 주어진 패스워드의 해시값과 동일한지 비교
        passwd = passwd_section + brute  
        shadow_passwd = md5_crypt.using(salt=salt).hash(passwd)
        cryted_passwd = shadow_passwd.split("$")[3]

        if cryted_passwd == hash_passwd:
            print("cryted_passwd : ", passwd, " hash : ", cryted_passwd)
            break

'모의해킹 > Dreamhack' 카테고리의 다른 글

Client Side Template Injection  (0) 2023.11.25
CSP Bypass  (0) 2023.11.23
[wargame.kr] dun worry about the vase  (0) 2023.11.18
crawling  (0) 2023.11.15
Tomcat Manager  (0) 2023.11.14