ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • random-test
    개인공부/드림핵 2025. 1. 18. 00:29

    이번 문제의 경우 알파벳 소문자 혹은 숫자를 포함하는 4자리 랜덤 문자열 및 100 이상 200 이하의 랜덤 정수 비밀번호, 즉 두 값을 맞게 입력하여 FLAG를 획득하는 문제이다.

     

    [문제 해결]

    1. 서버 접속

    접속 시 사물함 번호, 자물쇠 비밀번호 두 값을 입력해야 하는 것을 알 수 있다.

     

    이때 랜덤 값 두개를 입력 후 확인 시 아래와 같은 결과를 확인 할 수 있다.

     

     

     

    문제 파일을 분석해본다.

     

    2. 문제 파일 분석

     

    1번 

    - locker_num 및 password 파라미터에 입력된 값을 locker_num, password 변수에 저장한다

     

    2번

    - 조건문으로 조건 충족 여부를 확인한다

    - 조건은 다음과 같다:

    1. locker_num 변수가 빈 값이고

    2. rand_str 배열에 랜덤하게 생성되어 대입된 값과 locker_num 변수의 값과 비교

    • 이때 취약한 코드를 확인 할 수 있다
    • rand_str[0:len(locker_num)] 
      • rand_str 변수의 0번 인덱스 값부터 len(locker_num) 즉 locker_num 변수의 길이 만큼 값을 추출후 비교한다
        • 이말은 즉슨, 랜덤으로 생성된 4자리 문자열이 "f9h7"이고 입력된 locker_num 값이 "f" 일 경우 rand_str[0:len(locker_num)] = rand_str[0:1]로 인해 "f" == "f"가 되어 True가 반환된다

    3번

    - 조건문을 통해 입력된 값들과 랜덤 값들이 같은지 확인

     

    이때 2번의 취약 코드를 이용하여 FLAG 획득을 시도한다.

     

    3. Exploit

     

     

     

     

    FLAG를 획득하였다.

    '개인공부 > 드림핵' 카테고리의 다른 글

    amocafe  (0) 2025.02.12
    Type c-j  (0) 2025.01.04
    baby-union  (0) 2025.01.02
    BypassIF  (0) 2025.01.01
    what-is-my-ip  (0) 2024.12.31
Designed by Tistory.