10점짜리 웹해킹 문제이다.
문제 제목으로 유추해 보건데, PHP로 만들어진 웹페이지인것 같다.
문제 설명을 읽어보면 이 서비스의 취약점을 찾아서 exploit을 하라고 한다.
플래그는 index.php 파일안에서 찾을 수 있다고 적혀있다.
문제페이지에 들어가면 입력창이 하나있고, 제출 버튼이 나온다.
입력창에는 기본으로 127.0.0.1이 들어가 있다.
일단 제출버튼을 눌러본다.
127.0.0.1을 입력하고 제출을 누르면
ping 명령어 수행결과가 출력된다.
웹 페이지를 통해서 운영체제 명령어를 실행하고, 그 결과를 가져와서 보여주는 서비스인듯 하다.
참고로 실제 리눅스 환경에서 ping 명령어를 실행시키면 이렇게 뜬다.
출력 내용을 보면 완전 똑같은것을 볼 수 있다.
문제는 이렇게 웹서비스를 통해서 운영체제 명령어를 실행시킬 경우
사용자의 입력값을 적절하게 필터링 해줘야 한다는 것이다.
그렇지 않으면 불필요한 정보까지 노출될 수 있다.
리눅스 쉘스크립트는 명령어 뒤에 ; (세미콜론)을 쓰면
이어서 다른 명령어를 실행시킬 수가 있다.
ping 뒤에 ; 를 입력하고 ls를 입력하면
명령어 수행결과가 이렇게 같이 연달아서 출력되게 된다.
이 문제에서도 마찬가지이다.
127.0.0.1;ls 라고 입력하면 ping 뒤에 ls가 수행되어서
index.php가 출력된 것을 확인할 수 있다.
flag는 index.php 안에 있다고 했으니, 내용을 확인해본다.
127.0.0.1;cat index.php 라고 입력했더니
밑에 입력창과 제출버튼이 하나 더 생겼다.
이게 생긴 이유는 cat 명령어로 index.php를 출력해
브라우저가 웹페이지의 일부로 인식하고 해석했기 때문이다.
이 상태에서 f12를 눌러 개발자도구로 웹 소스를 본다.
그러면 이전에 없던 주석으로 처리된 내용이 보인다.
php 코드로 $flag 변수를 선언해서 해당 변수에 .passwd 파일의 내용을 대입하고 있다.
마지막으로 127.0.0.1;cat .passwd 라고 입력해주면
ping 명령어 수행결과 밑에 패스워드(플래그)가 출력되게 된다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] HTTP - Directroy indexing - 웹해킹 (44) | 2022.04.17 |
---|---|
[Root Me] Backup file - 웹해킹 / Vim (44) | 2022.04.13 |
[Root Me] HTTP - IP restriction bypass - 웹해킹 / 헤더변조 (52) | 2022.04.03 |
[Root Me] HTTP - User-agent - 웹해킹 / 헤더변조 (38) | 2022.04.03 |
[Root Me] HTTP - Open redirect - 웹해킹 / MD5 (64) | 2022.03.31 |