parse_url函数
parse_url函数
作用:parse_url — 解析 URL,返回其组成部分
mixed parse_url ( string $url [, int $component = -1 ] )
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。
参数:
url:要解析的 URL。无效字符将使用 _ 来替换。
component:
指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 中指定的部分的 string。 (除了指定为PHP_URL_PORT 后,将返回一个 integer 的值)。
对严重不合格的 URL,parse_url() 可能会返回 FALSE (CTF常用 返回值False 用于逃逸判断)
1 | DEMO |
这里我们还输出了当前$url的PHP_URL_PATH 发现是 /path
那么如果我们这里把$url中的/path去掉 发现输出的则为 NULL
tips:parse_url()会把//认为是相对路径(5.4.7以前)
如果我们
1 | <?php |
2016asisctf的一道web题 DEMO1
1 | <?php |
这里query中的参数有aaa 被preg_match匹配到 所以拦截了
这里test.php前面加了一个/ 导致把test.php? 认为成了host 相对的来说 /aaa/xxx 也就成为了路径 这也可以说是一个绕过吧
这里test.php前面再多加了一个/ 导致 严重不合格的 URL,parse_url() 返回FALSE 这个是通用的绕过方法
评论