Post

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.