https://bugs.php.net/bug.php?id=55511
위에 링크를 참조하자.
이 버그는 php쪽에서 접수를 받았음에도 처리가 안되었다고 한다. (묵살)
어떻게 발생하는 버그인지 알아보도록 하자!
$url = parse_url($_SERVER['REQUEST_URI']);
위와 같은 php 구문이 있다고 보고 분석을 해보자.
먼저 $_SEVER['REQUEST_URI'] 는 $_SERVER['QUERY_STRING']과 같은(?) 역할을 하는데,
QUERY_STRING은 GET인자로 넘길 때 ?뒤에 값들을 전부 리턴하고
REQUEST_URI도 ?뒤에 값들을 전부 리턴한다.
근데 문제는 parse_url에서 발생한다.
이 함수는 URL을 parse하기위해 만들어진 함수라서 최대한 URL형태로 보고 parse한다고 한다.
거기서 발생하는 버그이다.
parse_url함수는 parse실패시 false를 반환하게 된다는 점이다.
만약 필터링을 하는 곳에서 parse_url함수를 사용한다면 얼마든지 우회가 가능하며,
사용을 하지 말아야할 함수 중 하나다.
'Web > 공부' 카테고리의 다른 글
Blind SQL Injection (0) | 2014.10.31 |
---|---|
Error Based SQL Injection (0) | 2014.10.31 |