코드를 보면 create_function으로 임의의 함수를 만들어 사용한다.

 

source)

 

<?php
ini_set
('display_errors''on'
);
ini_set('error_reporting'E_ALL
);

$success 
'
<div class="alert alert-success alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    Function declared.
</div>
'
;

include 
"flag.php"
;

if (isset (
$_POST['c']) && !empty ($_POST['c'
])) {
    
$fun create_function('$flag'$_POST['c'
]);
    print(
$success
);
    
//fun($flag);
    
if (isset($_POST['q']) && $_POST['q'] == 'checked'
) {
        die();
    }
}
?>

 

근데 중요한건 함수를 정의한 후에 이 함수를 아예 쓰지를 않는다. 코드 자체의 결함으로 뭔갈하기에는 무리가 있어보였고 create_function자체의 취약점이 있는지 찾아봤더니 exploit-db에 RCE가 되는 취약점이 있었다.

poc이용해서 플래그를 따냈다.

 

'Wargame > websec.fr' 카테고리의 다른 글

Websec.fr babysteps Level28  (0) 2018.12.13
Websec.fr babysteps level 25  (0) 2018.12.12
Websec.fr easy level 11  (0) 2018.03.08
Websec.fr easy level10  (0) 2018.03.08
Websec.fr easy level 08  (0) 2018.03.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,