이번문제는
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 : 대상 파일이 공격대상 서버에 위치)
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님께서 손수 도와주신 문제
'Network > Webhacking.kr' 카테고리의 다른 글
[webhacking.kr] Challenge(old)_31[150] (0) | 2019.10.14 |
---|---|
[webhacking.kr] Challenge(old)_27[150] (0) | 2019.10.14 |
[webhacking.kr] Challenge(old)_19[150] (0) | 2019.10.14 |
[webhacking.kr] Challenge(old)_54[100] (0) | 2019.10.14 |
[webhacking.kr] Challenge(old)_39[100] (0) | 2019.10.14 |