DoR@Hee의 끄적끄적
webhacking.kr 41번 본문
문제 첫화면 파일 업로드를 이용한 취약점 인거 같다.
개발자도구를 이용 힌트가 존재한다.
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)>10) exit("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