웹/보안
LFI
parktest0325
2020. 2. 10. 23:25
include 명령은 문자열이나 파일등을 입력받아 현재 페이지의 해당 위치에 그대로 포함시키고, 이후 php가 해석하는 순서로 진행된다.
php LFI
문제 : https://babyphp.canhack.me/?p=home
php의 LFI에서는 php wrapper를 사용할 수 있다.
expect://
php://
zip://
phar://
data://
data wrapper는 data://text/plain;base64,SSBsb3ZlIFBIUAo= 모양으로도 사용할 수 있지만
data:text/plain,data 와 같이 //를 안붙이고도 사용할 수 있다.
문제에서는 파라미터가 wrapper:// 형식으로 시작하면 전부 필터링해버리고, 글자 길이도 20까지 입력할 수 있다.
p 파라미터를 통해 전달받은 데이터 data:,가 include 되면서 include 'data:,' . '.php'; 코드가 된다.
. 은 문자열을 연결시켜주는 역할을 하며 결국엔 .php라는 데이터를 텍스트 형식으로 출력하게 된다.
data에 <?=`명령`?>를 전달하여 php코드를 포함시킬 수 있고, ls 명령을 전달하여 디렉터리구조를 파악할 수 있다.
cat a*명령으로 admin.php 파일을 읽은뒤 소스보기를 통해 플래그를 찾는다.