개발 꿀팁/PHP

php 위조 프로토콜, 파일 포함 취약성

Jammie 2022. 7. 5. 14:55
반응형

php는 다양한 캡슐화 프로토콜을 지원하는데, 이러한 프로토콜은 항상 CTF 문제에서 파일과 취약점을 포함하며 결합됩니다. 여기서 요약합니다.실험용 DVWA 플랫폼, low 레벨, phpstudy에서의 설정은 5.4.45 버전입니다.

allow_url_fopen과 allow_url_include를 On으로 설정합니다.

index.php

ndex.php 동급 디렉토리 아래 mytest001.txt,



mytest002.txt

mytest003.zip (mytest003.txt 포함)

작은 실수가 있었으니 test003으로 써야 한다.

다시 설명하자면, include() 함수는 파일에 해당합니다.접미사 이름은 필요 없고, 접미사 이름은 txt라고 해도 파일 안에 <?>만 있으면 php 파일로 해석되는 문법에 대한 요구가 있다.php?> 형식은 실행이 가능하지만, php 문법의 형식이 아니면 접미사 php가 되어도 실행이 불가능하다.

1. php: // I/O 스트림에 액세스, 2개자주 사용하는 하위 프로토콜

1,php: // filter 디자인용필터 파일

용법

비 php 구문 파일 include 실패, 직접소스 내용을 출력합니다.

php 구문 파일 include 성공, 직접 실행

php 파일을 실행하는 소스코드를 읽으려면 base64 인코딩 후 include 함수로 들어오면 php 파일로 간주되지 않고 실행하지 않고 출력되는 base64 인코딩 후 디코딩하면 된다

rot13 코드의 경우 php 파일의 <?무효이고 여전히 php파일로 간주돼 실행되지만 내용은 스크램블돼 출력 효과가 없다.

2,php://input

이 협의의 이용 방법은 장차 집행할 것이다.행의 문법 php 코드는 post에 적어 제출하며, 키와 값 없이 코드만 쓰면 된다.

스스로 코드를 구성할 수 있다면 더 중요한 정보를 볼 수 있다

둘, file: // php: filter와 유사하게 로컬 파일에 접근하지만 절대 경로만 수신할 수 있습니다.

3. phar: // 지정한 압축 패키지의 파일을 찾을 수 있습니다

1,인바운드 절대 경로

2,동급 디렉터리에 있는 파일인 들어오는 상대 경로

4. zip: // 용법은 phar와 유사하지만 주의할 점이 두 가지 있습니다.

1,절대 경로만 수신할 수 있습니다.

2, 압축된 패킷과 압축된 패킷의 내용을 #로 구분하고 #는 url로 인코딩한다.%23

5. data는 input과 유사하게 사용자가 php를 제어할 수 있는 코드입니다.

1,코드에 직접 쓰기

data: text/plain, <?php 실행 내용? >

2,base64 인코딩 사용

data:text/plain; ( 세미콜론이 쉼표가 아니라 앞과 다르다는 점에 주의) base64, 인코딩된 php 코드

한 가지 주의해야 할 점은 base64 부호화 후의 더하기 기호와 등호는 수동으로 url 부호화해야 하며 그렇지 않으면 식별할 수 없다는 것이다.

마찬가지로 자신에게 코드를 쓸 권리를 주면 더 많은 것을 볼 수 있다

6. HTTP 프로토콜

인클루드에서도외부 링크는 http://, 구체적으로 어떻게 이용하실지 알려드립니다

마지막으로 정리해보도록 하겠습니다.

php:/filter file: // 로컬 파일에 액세스할 수 있습니다

zip: // phar: // 로컬 압축 파일에 액세스할 수 있습니다

php:/input data: php 코드를 직접 쓸 수 있습니다

allow_url_fopen과 allow_url_include의 설정과 사용법에 대해 여기에 요약이 있습니다.

 

반응형