Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
parse_url 的漏洞(绕开POST的域名检测) - NOTEBOOK
parse_url 的漏洞(绕开POST的域名检测)
PHP / MySQL
Posted on 2023-10-09
摘要 : 在检测POST时,经常需要检测 HTTP_REFERER 的域名是否合法。
如果使用parse_url来解析出域名,很容易被人用伪造的办法来绕开检测。
❱ 链接

parse_url绕过
parse_url函数的解释和绕过

// 2023-10-09
// 从网址中获得域名
// parse_url 不可以用于判断 POST 域名,因为有漏洞可以绕开
function get_domain($url){
return current(explode('/',end(explode('://',$url,2)),2));
}

//https://www.aaa.com/bbb/?new=1&old=2
// 得到 www.aaa.com


❱ 正常解析

<?php
$url = "http://www.baidu.com/suning?v=1&k=2#id";
echo $url.'</br>';
$parts = parse_url($url);
var_dump($parts);
?>



❱ 非正常解析

//假设传入的是 http://www.baidu.com@2333.com/suning?v=1&k=2#id

发现host变成了2333.com,这样host检测就被绕开了。


❱ 在路径中加多两个斜杠( / )也会导致解析失败

//例如。http://www.test.com///index.php?name=david


❱ 获取 url 中域名的方法

// 2023-10-09
// 从网址中获得域名
// parse_url 不可以用于判断 POST 域名,因为有漏洞可以绕开
function get_domain($url){
return current(explode('/',end(explode('://',$url,2)),2));
}

//https://do-op.work/notebook/?post=163
// 得到 do-op.work