DoR@Hee의 끄적끄적

webhacking.kr 41번 본문

WarGame/WebHacking.kr

webhacking.kr 41번

DoR@Hee 2019. 2. 25. 15:14


문제 첫화면 파일 업로드를 이용한 취약점 인거 같다.




개발자도구를 이용 힌트가 존재한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<html>
<head>
<title>Challenge 41</title>
</head>
<body>
 
<?
$hidden_dir="???";
 
$pw="???";
 
if($_FILES[up])
{
$fn=$_FILES[up][name]; //업로드한 파일을 $fn에 담는다/
$fn=str_replace(".","",$fn); $fn에 .이 있으면 ""(공백) 으로 치환
if(eregi("/",$fn)) exit("no");
if(eregi("\.",$fn)) exit("no");
if(eregi("htaccess",$fn)) exit("no");
if(eregi(".htaccess",$fn)) exit("no");
if(strlen($fn)>10exit("no"); // $fn에 길이가 10 이상 / \. htaccess .htaccess가 존재할 경우 no
$fn=str_replace("<","",$fn); //$fn에 존재하는 <를 ""으로
$fn=str_replace(">","",$fn); //$fn에 존재하는 > 를 ""으로
$cp=$_FILES[up][tmp_name];
 
copy($cp,"$hidden_dir/$fn"); //copy
 
$f=@fopen("$hidden_dir/$fn","w");
@fwrite($f,"$pw");
@fclose($f);
 
echo("Done~");
 
}
 
 
?>
 
<form method=post action=index.php enctype="multipart/form-data">
<input type=file name=up><input type=submit value='upload'>
</form>
</body>
</html>
cs


이 문제에 핵심은 $hidden_dir를 찾는것이 가장 핵심이다

그러나 $hidden_dir이 존재하는 소스는 copy함수 밖에 없기 때문에

copy함수를 이용한 문제인거 같다. 

구글링하여 알아본 결과
copy함수는 "" 즉 공백이 들어갈 경우 waring이 나타난다는것을 알았다. 



소스 중에 str_replace로 공백을 만드는 > 를 넣었더니 



$hidden_dir로 보이는 문자열이 나타났고 



정상적인 파일을 업로드 후 



경로에 들어가봤다 








성공






'WarGame > WebHacking.kr' 카테고리의 다른 글

webhacking.kr 43번  (0) 2019.02.25
webhacking.kr 42번  (0) 2019.02.25
webhacking.kr 39번  (0) 2019.02.24
webhacking.kr 38번  (0) 2019.02.24
webhacking.kr 8번  (0) 2019.02.23
Comments