Webhacking.kr - web28 (풀이봄)
web28
1
2
3
4
Mission : read ./upload/vPRZJD8Dm6Ke/flag.php your file will be uploaded at ./upload/vPRZJD8Dm6Ke/
<form method=post enctype="multipart/form-data" action=index.php>
<input type=file name=upfile><input type=submit>
Solution
파일을 읽어서 보여주는 것임.
혹시 웹 상의 파일을 읽을 수 있는지 확인해보았더니, ‘/’를 기준으로 맨 마지막 ‘/’ 뒤의 문자열만 읽어서 가져옴.
ex) /test/abc 를 올리면 ‘abc’만 읽어옴
결국 풀이를 봐버렸음..
내가 놓친 부분은 왜 flag.php 파일이 안읽혀지는가를 깊이 생각하지 않은 부분임.
파일을 읽어서 보여주는데 왜 ‘<’이 생략되었는지 이 부분만 생각하고 있었음. 이 부분은 문제 푸는데 중요하지 않음.
flag.php 파일이 안읽히는 이유는 웹 상에서 php 파일이 실행되고 있기 때문이라고 함. 이 실행권한을 없애주면 됨.
근데 php 파일이 실행되면 왜 안읽히는가?
브라우저는 클라이언트쪽의 언어를 해석하기 때문에 서버쪽 언어인 php를 해석할 수 없고 실행결과만 화면에 보여줄뿐인 것임.
따라서 특정 디렉토리 안에 .htaccess
파일을 생성 후 파일 내용에 php_flag engine off
를 해주면 그 디렉토리 경로 내에선 php파일을 실행하지 못하게 할 수 있음.
생성 후 업로드 해준 뒤 flag.php
소스파일을 보면 소스코드가 있음.
1
2
3
<?php
$flag="FLAG{easy_peasy_apachy}";
?>
https://zetawiki.com/wiki/.htaccess
.htaccess : hypertext access
디렉터리 수준의 아파치 웹서버 설정 파일, 각 폴더마다 접근 제어 설정 가능
용도 : 인증, 차단, URL다시쓰기, 커스텀 오류 응답, 캐시 컨트롤, MIME 타입 등..
This post is licensed under CC BY 4.0 by the author.