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
'워게임 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 28번 (.htaccess) (0) | 2021.10.26 |
---|---|
webhacking.kr old 26번 (url decode 2번) (0) | 2021.10.23 |
webhacking.kr old 22번(blind sql injection) (0) | 2021.10.23 |
webhacking.kr old 21번(blind sql injection) (0) | 2021.10.22 |
webhacking.kr old 12번(javascript난독화 aaencode) (0) | 2021.10.21 |
댓글