본문 바로가기
워게임/webhacking.kr

webhacking.kr old 25번(php wrapper)

by meanjung 2021. 10. 23.

wrapper란

- 실제 데이터의 앞에서 어떤 틀을 잡아주는 데이터

- 또는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램

 

 

원래 php wrapper는 개발자들의 개발을 돕기 위해 만들어진 기능이지만 우린 이 기능을 사용한 LFI에 대해 알아본다.

 

LFI하면 보편적으로 떠오르는 생각은 ?page=../../../etc/passwd/(널바이트)

여기서 널바이트는 주소 뒤에 붙을 확장자를 떼어주는 역할

 

그러나 php v5 이상이 되면서 path 중간에 null byte가 오면 더 이상 주소를 읽지않는 취약점이 사라졌다.

 

 

이 때문에 php wrapper를 사용해 LFI 공격을 수행해야 한다.

 

 

1. expect://

system command를 실행시켜 준다.

?page=expect://ls 같은 방식으로 사용한다.

 

 

2. php://filter

다양한 IO 스트림을 다루는데 사용하는 wrapper

이 wrapper를 사용할 때 encode/decode 옵션을 사용해 서버 안의 문서들을 열람할 수 있다.

?page=php://filter/convert.base64-encode/resource=/etc/passwd

이와 같이 한다면 /etc/passwd를 base64로 인코딩한 값을 알 수 있다.

 

 

3. zip://

zip의 압축을 풀고 압축을 푼 파일 안에 있는 코드를 실행시켜주는 기능

?page=zip://file.zip#shell.php 같은 방식으로 웹쉘을 실행시키는 등 다양한 기능을 수행할 수 있다.


http://webhacking.kr:10001/?file=php://filter/convert.base64-encode/resource=flag


https://opentutorials.org/module/4291/26819

 

LFI(2) - with php wrapper - WEB1

이번 시간에는 php wrapper를 사용한 lfi에 대해 알아보도록 하겠습니다.  우선 wrapper란 실제 데이터의 앞에서 어떤 틀을 잡아 주는 데이터 또는 다른 프로그램이 성공적으로 실행되도록 설정하는

opentutorials.org

 

댓글