3번째 시도,, level 25 문제 바로 소스코드 확인들어가자..
코드를 보면 REQUEST_URI를 parse_url함수를 통해서 parse 한 뒤 qurey에 flag 값이 들어가면 die메시지가 출력된다.
각 함수의 특징들을 살펴보자.
1.parse_url()은 host, port, user, path, query 등의 값을 반환하는 함수
2.parse_str()은 이름=값(query)의 형태로 만들어주는 함수
3.stripos()는 문자열을 찾는 함수
자세한 내용은 아래 참고 url을 통해서 확인 가능!
정상적으로 parse_url 함수가 사용 될 경우 query문에 flag 문자열이 들어가게 되므로 die메시지가 출력되게 된다.
URL: /index.php?page=flag
Array ( [path] => index.php [query] => page=flag )
비정상적인 우회(///를 사용) 할 경우는 //이후 다음에 나올 / 전에 문자열이 존재해야 host로 파싱하는데 그사이 문자열이 존재하지 않기 떄문에 NULL값이 들어가게 되고 false로 결과값을 리턴하게 된다.
URL: ///index.php?page=flag
Array ( [path] => NULL [query] => NULL )
그렇게 ///(triple slash)를 사용하게 되면 query에 flag문자가 들어가지 않게 되어 flag 값을 얻을 수 있다.
flag 값은 WEBSEC{How_am_I_supposed_to_parse_uri_when_everything_is_so_broooken}
참고
https://www.php.net/manual/en/function.parse-url.php
https://pistolwest.github.io
'워게임 > Websec.fr' 카테고리의 다른 글
[websec.fr] babysteps - Level 04 (0) | 2021.07.18 |
---|---|
[websec.fr] easy - Level 08 (0) | 2021.07.14 |
[websec.fr] easy - Level 02 (0) | 2021.07.11 |
[websec.fr] babysteps - Level 17 (0) | 2021.07.04 |
[websec.fr] babysteps - Level 01 (0) | 2021.07.03 |