Type c-j

2026. 2. 8. 23:25·Dreamhack 워게임/Lv.1
반응형

문제설명

php로 작성된 페이지입니다.

알맞은 Id과 Password를 입력하여 플래그를 획득하세요.

플래그의 형식은 DH{...} 입니다.


코드분석

check.php

function getRandStr($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[mt_rand(0, $charactersLength - 1)];
        }
        return $randomString;

    }
  • 인자로 길이를 받는데, 안 주면 기본값으로 10을 받음
  • 문자열에 들어갈 문자 후보들 0~9a-zA-Z까지이다.
  • 랜덤문자열은 빈 공간으로 시작하고 0~61번의 인덱스 중 하나 뽑아서 하나씩 골라서 최종 랜덤 문자열 반환함

즉, 랜덤 문자열 뽑는 함수

require_once('flag.php');
    error_reporting(0);
    $id = getRandStr();
    $pw = sha1("1");
    // POST request
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $input_id = $_POST["input1"] ? $_POST["input1"] : "";
      $input_pw = $_POST["input2"] ? $_POST["input2"] : "";
      sleep(1);

      if((int)$input_id == $id && strlen($input_id) === 10){
        echo '<h4>ID pass.</h4><br>';
        if((int)$input_pw == $pw && strlen($input_pw) === 8){
            echo "<pre>FLAG\n";
            echo $flag;
            echo "</pre>";
          }
        } else{
          echo '<h4>Try again.</h4><br>';
        }
      }else {
      echo '<h3>Fail...</h3>';
     }
  • id는 랜덤 문자열 10자, pw는 sha1("1") 임
  • 입력받은 id가 입력한 id와 랜덤 id가 같고 문자열이 10 글자면 통과
  • pw과 입력한 pw와 sha("1")한 값이 같고 8글자이면 통과

취약점 분석

if((int)$input_id == $id && strlen($input_id) === 10)
  • PHP 7.xx에서 '==' 는 느슨한 비교라서 정수와 문자열을 비교할 때 PHP사 한쪽을 반환함
    즉, 입력한 값은 (int)로 형변환을 하는데 aaaa 같은 것을 입력하면 0 이 됨. 오른쪽 값도 랜덤 문자열이라 aBcDeF.. 라 했을 때 숫자로 보면 0이라 조건이 만족이 됨
if((int)$input_pw == $pw && strlen($input_pw) === 8)
  • sha1("1")은 항상 "356xxx..."로 시작함
  • 만약 입력값이 356aaaaa라면 356까지만 숫자로 읽혀서 정수형 반환 시 356을 반환하게 됨
    오른쪽도 sha("1")이라 356asdsda...으로 들어가기 때문에 정수형 반환 시 356까지만 반환하게 되어 조건이 만족됨

익스플로잇

ID 값에 문자열 10글자만 되면 조건이 통과

PW값에 356으로 시작하는 문자열 8글자만 쓰면 통과한다.

 

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

simple-phparse  (0) 2026.02.09
BypassIF  (0) 2026.02.09
baby-union  (0) 2026.02.08
amocafe  (0) 2026.02.08
command-injection-chatgpt  (0) 2026.02.08
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • simple-phparse
  • BypassIF
  • baby-union
  • amocafe
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (167) N
      • Alpacahack (19) N
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (15)
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSRF
    cve
    hacking
    xss
    alpacahack
    webhacking
    DreamHack
    JS
    드림핵
    LLM
    webstudy
    JavaScript
    web
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
Type c-j
상단으로

티스토리툴바