728x90
<?php
include "../../config.php";
include "./inc.php";
if($_GET['view_source']) view_source();
error_reporting(E_ALL); // 모든 에러를 리포팅함
ini_set("display_errors", 1); // 에러를 화면에 표시
?><html>
<head>
<title>Challenge 41</title>
</head>
<body>
<?php
if(isset($_FILES['up']) && $_FILES['up']){
$fn = $_FILES['up']['name'];
$fn = str_replace(".","",$fn);
$fn = str_replace("<","",$fn);
$fn = str_replace(">","",$fn);
$fn = str_replace("/","",$fn);
$cp = $_FILES['up']['tmp_name']; // 임시 파일을 저장하고 이 임시 파일을 사용하기 위해 copy함
copy($cp,"./{$upload_dir}/{$fn}");
$f = @fopen("./{$upload_dir}/{$fn}","w");
@fwrite($f,$flag);
@fclose($f);
echo("Done~");
}
?>
<form method=post enctype="multipart/form-data">
<input type=file name=up><input type=submit value='upload'>
</form>
<a href=./?view_source=1>view-source</a>
</body>
</html>
코드를 보면 처음에 모든 에러를 화면에 표시하게 해줬으니 이 에러를 이용해서 뭔가 해주어야 한다.
처음에 여러 에러 예를 들어, 특수문자만 사용한 파일을 업로드 해준다던지 등 해줬지만 아무것도 안나와서 여러 파일 에러를 찾아봤다.
여러 에러 중 파일 이름이 260자가 넘으면 에러가 난다는것을 알았고 버프스위트를 이용해 파일이름을 260자가 넘도록 설정해 주었다.
./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a 이 디렉토리에 파일을 저장한다는 것을 확인했고 이 디렉토리에 저장된 파일 중 하나를 GET요청 해보면은
FLAG를 얻을 수 있다.
728x90
반응형
'Web Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old-51 풀이 (0) | 2023.12.27 |
---|---|
Webhacking.kr old-10 풀이 (0) | 2023.12.24 |
Webhacking.kr old 43 풀이 (0) | 2023.12.21 |
Webhacking.kr old-56 풀이 (2) | 2023.12.21 |
Webhacking.kr old 37 (해결X) (0) | 2023.12.14 |