프로젝트/DVWA 실습

DVWA 실습 #5-2 - File Inclusion(medium)

하루히즘 2021. 1. 12. 16:54

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #5 - File Inclusion

 

DVWA 실습 #5 - File Inclusion

DVWA의 네 번째 실습 대상인 File Inclusion이다. 각 파일을 클릭하면 특정 php 코드가 실행되며 URL에 파일 이름이 파라미터로 전달된다. 이 특성을 활용하여 웹 서버가 다른 파일을 읽도록 하는 것이

haruhiism.tistory.com

문제 해결 방법

이번 단계부터는 기초적인 필터링이 적용되고 있다. 이전 단계처럼 Directory Traversal을 이용해 플래그 파일을 읽으려고 하면 파일을 찾을 수 없다는 오류가 발생하는데 오류 로그를 자세히 살펴보면 뭔가 빠진 것을 알 수 있다.

"../../hackable/flags/fi.php"가 "hackable/flags/fi.php"가 됐다. 앞의 "../../"가 사라진 것인데 이는 단순 str_replace()로 "../"이나 "..\"를 제거했기 때문이다. str_replace() 함수는 호출 시 단 한 번만 필터링을 수행하기 때문에 예전에 'admin'을 'admadminin'처럼 입력했더니 가운데의 'admin'이 사라지고 양 끝의 'adm'과 'in'이 붙어서 다시 'admin' 문자열이 생성된 것처럼 이번 필터링도 '../'을 '....//'처럼 입력하면 양 끝의 '..'와 '/'가 붙어서 '../'가 된다. 이를 이용해서 Directory Traversal을 수행하면 쉽게 필터링을 우회하여 파일에 접근할 수 있다.

비슷하게 RFI를 시도할 경우 'http://', 'https://' 프로토콜 문자열이 필터링되는데 역시 str_replace() 함수를 우회하면 된다.

요즘에야 그런 경우가 잘 없겠지만 문자열 필터링, 또는 치환 함수가 어떻게 동작하는지 특징을 잘 알지 못한다면 이렇게 우회할 수 있다는 점을 알려주는 것 같다.

'프로젝트 > DVWA 실습' 카테고리의 다른 글

DVWA 실습 #6 - File Upload  (0) 2021.01.12
DVWA 실습 #5-3 - File Inclusion(high)  (0) 2021.01.12
DVWA 실습 #5-1 - File Inclusion(low)  (0) 2021.01.12
DVWA 실습 #5 - File Inclusion  (0) 2021.01.12
DVWA 실습 #4-3 - CSRF(high)  (0) 2021.01.08