풀기 전에 문제를 간단하게 읽어본다.
php로 작성된 파일을의 취약점을
이용해 플래그를 얻는 문제이다.
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES)) {
$directory = './uploads/';
$file = $_FILES["file"];
$error = $file["error"];
$name = $file["name"];
$tmp_name = $file["tmp_name"];
if ( $error > 0 ) {
echo "Error: " . $error . "<br>";
}else {
if (file_exists($directory . $name)) {
echo $name . " already exists. ";
}else {
if(move_uploaded_file($tmp_name, $directory . $name)){
echo "Stored in: " . $directory . $name;
}
}
}
}else {
echo "Error !";
}
die();
}
?>
문제를 푸는데 필요한 코드
사이트에 접속하게 되면
다음과 같이 뜬다.
코드 16~17번째 줄을 보게 되면
파일 업로드 시 Stored in 문자와 함께
directory와 name을 볼 수 있게 된다.
메모장에 다음과 같이 작성해
php로 저장한다.
(php 태그 정의: <?php 내용?>
system() 함수: 주어진 시스템 명령어를 실행하고 결과 출력)
업로드 창에서 방금 작성한 파일을 업로드 시킨다.
Stored in과 함께 업로드한 파일 명이 뜬다.
list창으로 들어가면
업로드한 파일을 볼 수 있고
이걸 클릭할 경우 그에 대한 내용을 볼 수 있다.
정답: DH{c29f44ea17b29d8b76001f32e8997bab}