Wargame/Webhacking.kr

[Webhacking.kr - Old 25]

핏디 2021. 8. 19. 15:37
SMALL

[문제]


[풀이]

문제를 살펴보면 터미널 창의 파일 목록을 확인했을 때 볼 수 있는 결과 값을 확인할 수 있다.

 

url을 살펴보면 file에 hello가 들어가 있는데, 문제를 통해 확인해보면 hello.php 가 hello로 변환되어 있다는 것을 볼 수 있다.

http://webhacking.kr:10001/?file=hello

 

그렇다면 flag.php 파일 또한 flag로 입력하면 보일 것이라 생각되는데, 직접 실행해보면 다음과 같다.

이렇게 FLAG is in the code라는 문자열만 출력되고 flag를 획득할 수 없다.

 

flag.php 소스코드를 읽어야 flag를 획득할 수 있는데 서버 내에 존재하는 flag.php 파일을 읽기 위해서는 LFI 취약점을 이용해야 한다.

 

http://webhacking.kr:10001/?file=php://filter/convert.base64-encode/resource=flag 를 입력하면 소스코드가 base64 인코딩된 형태로 출력된다.

 

이를 디코딩 하면

flag를 획득할 수 있다.


[핵심]

wrapper: 실제 데이터의 앞에서 어떤 틀을 잡아 주는 데이터 또는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램

- 원래 php wrapper는 개발자들의 개발을 돕기 위해서 만들어진 기능

 

www.[우리가 공격할 웹 사이트의 주소].index.php?page=../../../../../../../../etc/passwd/(널바이트)

- 널바이트는 주소 뒤에 붙을 확장자(.php, .txt)등을 떼어내 주는 역할

- php가 버전 5 이상이 되면서 path 중간에 널바이트가 오면 주소 더 이상 읽지 않는 취약점이 사라짐

 

LFI(Local File Inclusion) 취약점

: 파일이 공격 대상의 서버에 위치할 때 이용할 수 있는 취약점

 

1. expect://

expect wrapper: system command 실행

ex) expect wrapper 가 필터링 당하지 않았다면 www.[공격할 웹 사이트의 주소].index.php?page=expect://ls

-> system command로 ls를 보냈기 때문에 디렉토리 목록 확인 가능

 

2. php://filter

php://filer wrapper: 다양한 I/O스트림을 다루는데 사용하는 wrapper

- encode/decode 옵션 사용해 서버 속 존재하는 문서 열람 가능

ex) www.[우리가 공격할 웹 사이트의 주소].index.php?page=php://filter/convert.base64-encode/resource=/etc/passwd

-> base64 방식으로 인코딩 된 etc/passwd의 값 획득 가능

 

3. zip://

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

ex) www.[우리가 공격할 웹 사이트의 주소].index.php?page=zip://file.zip#shell.php

-> web shell 실행

 

4.php://stdin, php://stdout and php://stderr

stdin, stdout, stderr로 연결.

 

5.php://fd/<fd number>

파일 디스크립터에 연결한다.

 

6.php://input

http의 body,즉 post 데이터를 입력받는다.

 

file_get_contents를 이용해 웹 상의 파일을 읽을 수 있다.

php include 취약점

 

php의 Include 함수는 인자로 전달된 파일을 읽은 후 해당 파일의 내용을 출력한다. 파일의 내용 중 php 코드 구문이 존재하면 해당 코드를 실행 한다.

 

include함수는 동적으로 다른 php 페이지를 로드해야할 때 사용한다.

 

include 함수는 파일의 확장자 또는 파일의 타입과는 상관없이 파일의 내용의 php 코드를 실행시킨다.


[출처]

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

https://watchout31337.tistory.com/m/148?category=901404 

 

php include, wrapper 취약점

출처 : https://dreamhack.io/learn/15#39 https://blackperl-security.gitlab.io/blog/2018/08/10/2018-08-10-aswj-03/ php include 취약점 php의 Include 함수는 인자로 전달된 파일을 읽은 후 해당 파일의 내..

watchout31337.tistory.com


 

LIST

'Wargame > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Old - 27  (0) 2021.08.19
[Webhacking.kr] Old-19  (0) 2021.08.12
[Webhacking.kr] Old-54  (0) 2021.08.11
[Webhacking.kr] Old-39  (0) 2021.08.11
[Webhacking.kr] Old 26  (0) 2021.08.04