HackCTF - Wise Saying
sql injection이 질려서 잠깐 HackCTF로 넘어왔다.
로그인은 아무 글자나 입력해도 로그인이 된다. 그게 중요한게 아닌가보다.
페이지별로 wise한 말씀이 있는 것 같다. 그리고 페이지소스를 보면 ?phpinfo=1 이라는 힌트가 있다.
phpinfo를 관람할 수 있게 되었다.
여기서 취약점의 힌트를 얻을 수 있는 것 같다.
발견한 취약점으로는 allow_url_fopen 이 있었다.
allow_url_fopen 기능이란 php 에서 include 를 사용할때 URL 방식으로 파일을 include 할수 있도록 해주는 기능이다.
아무래도 이걸 이용한 문제인것같다.
아까 page=1.say 같은 파리터에서 1.say는 실제 존재하고있는 파일이고 그걸 include해서 내용을 출력한게 아닌가 싶다.
그럼 일단 index.php가 아닌 1.say 로 접속해보면
파일이 존재한다. 그럼 일단 page파라미터에 /etc/passwd를 입력하여 보자
세상에...
혹시모르니 더 해보자
이것도 안되고.. 구글드라이브에 올린 파일도 되지 않았다.
.say로 끝나는 파일들 빼고는....
.say ?? .say로 끝나면 되는것일까? 아니다 say로만 끝나면 되는것이였다.
그럼 귀찮게할 필요없이 서버 내에 say로 끝나는 파일이 있을까? 없다면 내가 만들 수 있을까 했는데
PHPSESSID를 이용하여 say로 끝나는 파일을 만들 수 있었다.
phpinfo에서 세션파일이 저장되는 경로를 확인하여 해당파일을 봐 보도록하자
no value 일 경우 /tmp에 저장된다는걸 이용해 보자....
일단 쿠키 PHPSESSID를 say로 끝나게 바꾸고
위처럼 로그인한 후 ?page=/tmp/sess_[나의PHPSESSID]
로 들어가면 php코드가 실행되면서 해당 디렉토리 내의 파일들의 이름을 뱉어낸다.
index.php말고 딱봐도 플래그같아보이는 파일명을가진 파일로 접속하면 플래그를 알 수 있다.