728x90
이번 문제의 내용은 아래와 같다.
문제 파일을 다운로드 받으면 이렇게 총 3가지의 php 파일이 있는데 이 파일들은 위 문제의 접속 정보에 안내되어 있는 사이트에서 사용된 파일인 것 같다.
문제 사이트는 아래 이미지와 같이 되어있었고, 파일 업로드의 취약점을 이용해서 문제를 푸는 것 같다.
upload.php 파일을 보니 따로 파일 확장자에 대한 필터링을 하지 않는 것을 볼 수 있었다.
따라서 flag가 존재하는 /flag.txt 경로로 이동하는 command를 실행하는 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();
}
?>
다음과 같이 /flag.txt로 이동하는 코드를 작성해주고
getFlag.php 파일로 저장해주었다.
다시 사이트로 돌아가서 우리가 만든 php 파일을 업로드 해주었더니
위 쪽 탭의 List로 가면 업로드된 getFlag.php 파일이 있는 것을 확인할 수 있다.
이 파일을 클릭하면 플래그를 얻을 수 있는 화면으로 넘어가고 최종적으로 플래그 값을 얻을 수 있었다.
문제 해결 완료!!
728x90
'CTF' 카테고리의 다른 글
[Dreamhack] mongoboard (0) | 2023.04.12 |
---|---|
[Dreamhack] session (0) | 2023.04.12 |
[Dreamhack] command-injection-1 (0) | 2023.04.12 |
[Dreamhack] devtools-sources (0) | 2023.04.01 |
[Dreamhack] Carve Party (0) | 2023.03.31 |