Search

WebHacking.kr Challenge old-41

목표 : 에러메시지
파일 업로드가 가능하고 소스를 바로 보여준다.
<?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($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>
SQL
복사
에러가 나오면 출력하게 돼있고,
업로드된 파일 명에서 . < > / 은 없애고 $fn에 저장한다.
$cptmp_name이라는 임시 파일명으로 설정하고 $fn 파일을 $cp 경로에 복사한다
이후 그 안에 flag값을 저장한다.
tmp_name 형식을 알 수 있다면 해당된 경로로 찾아가 작성된 flag를 볼 수 있다.
얻을 수 있는 정보는 더 이상 없으므로 파일 업로드를 통한 에러를 통해 정보를 얻어야 한다.
파일 이름을 쓸데없이 길게 만들어봤다.
한큐에 tmp_name을 획득했다.
원래 업로드 했던 파일에 접근해보자.
이름 필터링에서 . 이 사라질테니 이를 지우고 다시 접속해보면
플래그를 획득했다.

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. absolroot all rights reserved.