WEB] php wrapper

노션으로 옮김·2020년 3월 2일
0

skills

목록 보기
4/37
post-thumbnail

rootme.org - filters는 LFI 취약점 문제인데, 여기서 php://라는 Wrapper의 filter가 사용된다.

여기에 대한 개념이 이해가 안가서 간단히 몇 가지를 정리해본다.

Wrapper

말 그대로 감싼다는 추상적인 개념이다.
이런 wrapper를 이용하여 몇가지 프로토콜이 지원된다.
(또한 커스텀 wrapper도 가능하다고 한다.)
PHP document

file:// — Accessing local filesystem
http:// — Accessing HTTP(s) URLs
ftp:// — Accessing FTP(s) URLs
php:// — Accessing various I/O streams
zlib:// — Compression Streams
data:// — Data (RFC 2397)
glob:// — Find pathnames matching pattern
phar:// — PHP Archive
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — Audio streams
expect:// — Process Interaction Streams

PHP://

PHP provides a number of miscellaneous I/O streams that allow access to PHP's own input and output streams,

간단히 stream을 표현하는데 사용된다고 보면 될 것 같다.

가장 중요한 filter에 해당하는 내용을 살펴보겠다.
설명이 제대로 안나와있어서 예시를 보면서 이해하자.

쓰기

<?php
/* This will filter the string "Hello World"
  through the rot13 filter, then write to
  example.txt in the current directory */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>

읽기

<?php
/* This will output the contents of
  www.example.com entirely in uppercase */
readfile("php://filter/read=string.toupper/resource=http://www.example.com");

/* This will do the same as above
  but will also ROT13 encode it */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>

string.rot13으로 된 것은 rot13 암호화로 인코딩되서 페이지에 출력된다는 점이 다르다.

필터에 관련된 옵션은 PHP page - filter에서 확인할 수 있다.

0개의 댓글