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 파일을 읽은뒤 소스보기를 통해 플래그를 찾는다.
'웹 > 보안' 카테고리의 다른 글
XSS with BBCode (0) | 2020.02.12 |
---|---|
Chrome XSS 우회 (feat. canhack.me) (0) | 2020.02.11 |
SQL 인젝션 테스트용 테이블 (0) | 2019.12.16 |
파일 다운로드 취약점 (0) | 2019.12.03 |
언어 별 특징 : JSP (0) | 2019.11.19 |