Dominic Repo

[webhacking.kr] Challenge(old)_25[150] 본문

Network/Webhacking.kr

[webhacking.kr] Challenge(old)_25[150]

DominicS 2019. 10. 14. 18:55

이번문제는 

get 파라미터명 : file

해결해야 되는 부분 : flag를 따내는 문제인것 같다?

우선 file 파라미터값을 flag로 줬더니 이렇게 뜬다.  FLAG is in the code 플래그는 코드에 있다?

밑에 textarea는 왜 존재 하는것일까? 그냥 결과를 출력해주기 위해서?아마 그냥 출력해주기 위해서 인듯..

코드에 있다길래 index.php 코드를 유심히 봤지만 아닌것같다!

삽질을 하던 중 

?file=hello/../index 

하면 index.php 소스가 textarea에 반복적으로 도는 것을 볼 수 있다. 여기서 파일명에 기본적으로 .php가 들어가는것을 알 수 있다.

파일 취약점에 대해 알아보다가 파일을 여는 함수가 뭐가 쓰이는지 몰라서 fopen()인가 좀 알아보고

그게 아닌 다른 파일 취약점 LFI 취약점에 대해 고민을 하게 되었다.

  • RFI(Remote File Inclusion Vulnerability)

    • 공격자가 악성 스크립트를 서비스 서버에 전달하여 해당 페이지를 통하여 전달한 악성 코드가 실행되로록 하는 것이다. 쉽게 말해 웹 어플리케이션에 공격자 자신의 코드를 원격으로 삽입 가능하다는 것이다.

    • $_GET, $_POST, $_cookie 등으로 값을 전달 받는 과정에서 파라미터 값을 제대로 검사하지 않아 발생(php)

  • LFI(Local File Inclusion Vulnerability)

    • 마찬가지로 File Inclusion 취약점은 같지만 파일을 포함시킬 때 해당 파일이 공격대상 서버에 위치 한다는 점에서 RFI와 구별된다.(RFI : 대상 파일이 원격지에 위치, LFI : 대상 파일이 공격대상 서버에 위치)

  • https://blog.naver.com/siren258/145489344

LFI 페이로드를 참고하여 작성하게 되었다.

php://filter/read=convert.base64-encode/resource=index.php
=> ?file=php://filter/read=convert.base64-encode/resource=flag

그러자 flag.php의 내용이 나왔고 base64로 인코딩 된 것이 보였다.

FLAG{this_is_your_first_flag}

클리어! LFI 문제를 접해 보지 않으면 정말 모르는 문제인것같다. sweetchip님께서 손수 도와주신 문제