관리 메뉴

great minds think alike

[Dreamhack/드림핵] image-storage 본문

SWLUG/웹 해킹

[Dreamhack/드림핵] image-storage

gapsoo 2023. 9. 30. 16:36

https://dreamhack.io/wargame/challenges/38

 

image-storage

php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic

dreamhack.io


 

 

"php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다."

 

이전에 파일 업로드 취약점을 이용한 문제를 풀었는데 도움이 되었으면 좋겠다고 생각하고 시작했다.

 

 

 

 

가장 처음의 화면이다. 이 화면은 Home 카테고리에 해당하는 화면.

 

 

 

List를 눌러보면 빈 화면이 뜨는데 아직 올린 파일이 없어서 아무것도 안 뜨나보다.

 

Upload 카테고리의 화면.

 

파일을 로컬에서 선택해서 업로드할 수 있도록 구성되어있다.

 

 

 

이 파일을 올려봤다. 파일의 이름은 ".password.jpg" 이다.

 

 

 

저장된 위치를 알려주는 화면이 나온다.

 

 

 

List에 내가 올린 파일이 등록되었다.

 

 

 

들어가서 url을 확인해보면 아까 알려줬던 그 위치에 파일이 저장된 것을 볼 수 있다.

 

 

 

 

 

http://host3.dreamhack.games:23171/.flag.txt 를 주소창에 입력했으나 이런 에러 메세지를 확인할 수 있었다.

 

 

 

 

 

 

다음과 같은 내용의 php 파일을 업로드하고

 

 

 

업로드한 위치에 들어가서 확인했더니

 

<> 글자가 그대로 소스코드에 반영이 되어

 

웹셸을 시도할 수 있다는 것을 알게 되었다.

(예전에 문제를 풀다가 <> 문자가 반영이 안 됨을 확인하고 웹셸이 아닌 다른 방법으로 문제를 풀어야 한다는 것을 달았던 경험이 있어서 <>을 넣어서 확인해보았다.)

 

 

그래서 위와 같은 php 파일을 업로드 하여 .flag.txt 파일의 내용을 출력해보려고 했다.

 

 

 

 

 

위의 파일을 업로드하고 위치로 가보았는데

 

흰 화면만 떴다.

 

전에도 웹셸을 이용하려고 php 파일을 업로드한 적이 있었는데, 그 때도 이렇게 흰 화면만 뜬 적이 있었다.

 

그 때 흰 화면만 떴던 이유는 php 파일의 코드가 실행되어서 코드가 보이지 않고 흰 화면만 보였었다.

 

그럼 실행된 상태니까 url 뒤에 ?cmd=cat http://host3.dreamhack.games:23171/.flag.txt 를 입력해주면 flag.txt의 내용이 출력될 줄 알았다.

 

 

 

 

그런데 여기서부터 문제가 발생했다.

 

아마 ?cmd=cat http://host3.dreamhack.games:23171/.flag.txt 를 입력했는데 에러 화면이 떴던 것 같다.

 

에러화면에서 알려주길 이 문제의 서버가 아파치 서버라고 하길래

 

호기심이 생겨서...

 

.htaccess 파일을 업로드해서 php 코드 실행을 중지하도록 할 수 있는지도 궁금해져서

 

.htaccess 파일에 "php_try3 engine off" 라는 텍스트를 입력하여서 적용이 되는지 확인해보고 싶었다. (그러니까 try3.php를 실행 중지시켜서, 빈 화면이 보이는 것이 아니라 php 코드가 그대로 보일지 궁금했다.)

 

그래서 .htaccess 파일을 업로드 한 뒤 try3 파일에 들어갔더니

 

 

internal server error가 발생했다고 한다.

 

그리고 내가 올렸던 다른 모든 파일에 들어가려고 하면 이 에러가 발생했다.

 

.htaccess 파일 때문일텐데

 

이 문제에는 업로드한 파일을 삭제하는 기능도 없었기 때문에...

 

더 이상 문제를 풀 수가 없었다. 저 에러때문에 업로드한 파일에 접근할 수가 없었다.

 

망했다는 생각이 들어서 여기서부터 구글링을 통해 문제를 풀었다. 

 


 

참고한 블로그이다.

 

https://blog.naver.com/security-705/223068632713

 

image-storage

#드림핵 #워게임 #CTF #IT #보안 문제>> php로 작성된 파일 저장 서비스입니다. 파일 업로드 취...

blog.naver.com

 

 

출처: 위에 링크 걸어둔 블로그 글

 

위의 코드가 적힌 php 파일을 업로드하고, 그 php 파일이 저장된 곳으로 이동하면

 

 

출처: 위에 링크 걸어둔 블로그 글

 

이러한 flag 값이 뜬다고 한다. 

 

 

 

 

flag.txt 에 적힌 값을 정답란에 입력하면 된다...!

 

하하하 ;;

 

 

'SWLUG > 웹 해킹' 카테고리의 다른 글

[LoS.Rubiya.kr] gremlin  (0) 2023.10.06
[Dreamhack/드림핵] simple_sqli  (0) 2023.10.06
[Root me] Install files  (0) 2023.09.30
[Root me] File upload - Double extensions  (0) 2023.09.30
[Webhacking.kr] old-28  (0) 2023.09.28