gif 파일 업로드 기능이 있는 문제이다.
source)
<?php if (isset ($_FILES) && !empty ($_FILES)): ?>
<div class="row">
<?php
$uploadedFile = sprintf('%1$s/%2$s', '/uploads', sha1($_FILES['fileToUpload']['name']) . '.gif');
if (file_exists ($uploadedFile)) { unlink ($uploadedFile); }
if ($_FILES['fileToUpload']['size'] <= 50000) {
if (getimagesize ($_FILES['fileToUpload']['tmp_name']) !== false) {
if (exif_imagetype($_FILES['fileToUpload']['tmp_name']) === IMAGETYPE_GIF) {
move_uploaded_file ($_FILES['fileToUpload']['tmp_name'], $uploadedFile);
echo '<p class="lead">Dump of <a href="/level08' . $uploadedFile . '">'. htmlentities($_FILES['fileToUpload']['name']) . '</a>:</p>';
echo '<pre>';
include_once($uploadedFile);
echo '</pre>';
} else { echo '<p class="text-danger">The file is not a GIF</p>'; }
} else { echo '<p class="text-danger">The file is not an image</p>'; }
} else { echo '<p class="text-danger">The file is too big</p>'; }
?>
</div>
<?php endif ?>
getiamagesize랑 exif_imagetype으로 다른 포맷의 파일이 업로드되지 못하도록 필터링하고 있다. 그냥 gif포맷 파일안에 php코드 박아서 업로드해주면 이 파일을 include하면서 php 코드 실행이 가능해진다.
바로 시스템명령어 함수써서 마무리지으려했는데 disabled fuction에는 정의가 안되있는데 이상하게 함수 실행이 안됬다. ping이나 sleep으로 시간지연도 안생기는거보니 단순히 출력 안하는 문제는 아닌것 같았다.
그래서그냥 파일,디렉터리 관련 함수써서 풀었다.
'Wargame > websec.fr' 카테고리의 다른 글
Websec.fr easy level 11 (0) | 2018.03.08 |
---|---|
Websec.fr easy level10 (0) | 2018.03.08 |
Websec.fr easy level 02 (0) | 2018.03.08 |
Websec.fr babysteps level17 (0) | 2018.03.08 |
Websec.fr babysteps level 06 (0) | 2018.03.08 |