<문제 링크>
https://dreamhack.io/wargame/challenges/38/
image-storage
php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic
dreamhack.io
<나의 풀이>
1. 문제 링크 접속, 공격 코드 작성
문제 링크로 접속하면 파일을 업로드하는 페이지가 나온다. 페이지 이름은 Image Storage라고 되어 있지만 업로드 파일 확장자가 제한되어 있지 않기 때문에 어떤것이든 업로드할 수 있는 취약점이다.
드림핵에서 예시로 제공된 php코드이다. 자세히 뜯어보면 파일이 열리면 cmd창을 열게 한다는 내용으로 복잡하진 않지만 백지 상태에서 이 코드를 혼자 생각해내지는 못했을 것 같다. 난 위 코드를 메모장에 작성해 exploit.php파일로 저장했다.
2. 공격 파일 업로드, 플래그 획득
저장한 파일을 성공적으로 업로드 하면 파일의 업로드 위치가 출력된다.
이전 페이지로 돌아가서 List탭으로 들어가면 내가 업로드한 파일이 보인다.
업로드한 파일 이름을 클릭하니 위와 같이 쉘이 성공적으로 실행된 것을 볼 수 있다.
작동 테스트를 위해 파일 목록 출력 명령을 입력하니 정상 작동하는 것을 볼 수 있다.
플래그 파일명은 문제에서 알려줬기 때문에 flag.txt파일 내용을 읽는 명령을 실행하면 플래그 획득!
플래그 : DH{c29f44ea17b29d8b76001f32e8997bab}
<이 문제를 통해 배운 것>
파일 업로드 공격 개념과 방법
php 웹 셸 코드 내용(이정도는 스스로 작성할 수 있어야 한다는 것...)
'해킹 공부 > 웹 해킹' 카테고리의 다른 글
Webhacking.kr_old 26_WriteUp (preg_match, urldecode) (0) | 2023.08.07 |
---|---|
Dreamhack_command-injection-1 (0) | 2022.02.13 |
Dreamhack_csrf-1(CSRF 취약점) (0) | 2022.02.05 |
Dreamhack_csrf-2(CSRF 취약점) (0) | 2022.02.05 |
dreamhack xss-2(XSS 방화벽 우회) (0) | 2022.01.30 |