문제 환경
문제 사이트인 http://web.h4ckingga.me:10012/로 접속한다.

그러면 위와 같은 페이지가 보이는데 여기서 hello를 누르면

inc에 hello가 파라미터로 입력되어 요청을 보내서 위와 같은 TMI를 볼 수 있다.

test를 누르면 위와 같이 뜨는데 위 글을 보면 hello, test는 파일이라는 것을 알 수 있다.
파일의 내용을 읽어온다면 LFI를 생각할 수 있다.
LFI 취약점 확인

그래서 /etc/passwd를 입력해봤다.
파일 내용은 잘 읽어온다.
필터링 우회 과정
최종 목표는 /flag 내용을 읽는 것이니 /flag를 입력해봤다.

그런데 위와 같이 출력된다.
아무래도 위 값이 필터링 되는 거 같다.
그래서 URL Encoding이나 hex Encoding을 시도해봤는데 똑같이 no hack이라고 출력된다.

http://web.h4ckingga.me:10012/?inc=data://text/plain;base64,PD9waHAgc3lzdGVtKCIvZmxhZyIpOyA/Pg==
php wrapper를 이용해봤는데 이것도 필터링에 걸린다.

뭐가 필터링에 걸리나 했더니 ://가 필터에 걸리는 거 같다.
://는 :로 우회할 수 있다.

http://web.h4ckingga.me:10012/?inc=data:text/plain;base64,PD9waHAgc3lzdGVtKCIvZmxhZyIpOyA/Pg==
위처럼 :// 를 :로 바꿔서 시도해보면 flag 값이 나오는 것을 확인할 수 있다.

참고로 위 URL로 index.php 내용을 불러오면 주석으로 필터링 목록을 확인할 수 있다.