file inclution
0x01 low
观察get中page参数可变,尝试修改
看到回显内容
还可远程包含文件
0x02 medium
过滤了http和…/过滤
使用str_replace(array())将目标串替换为"",考虑双写绕过
在较新版本中双写绕过似乎有些困难
0x03 high
规定以file开头
考虑伪协议包含文件
file://协议
0x04 impossible
写死读file文件,考虑上传同名文件,可能会修改文件内容
0x05 Repair 修复
主要过滤包含的函数,包含也叫语言特性,一般语言都有
include(),require()和include_once(),require_once()
include一般用于无关紧要的地方,包含出错也能继续执行代码
require一般更推荐使用,包含失败会产生致命错误,代码执行被终止
$stringing = "include|require|include_once|require_once"; $suspects = explode("|",$stringing); //$punctuation = array("(",")","&","|","/","\\",";","file","data","filter"); //$suspects = array_merge($suspects,$punctuation); $allnull = array(); for ($i = 0;$i<count($suspects);$i += 1){ array_push($allnull,'Hacker'); } $count = 0; $file = str_replace($suspects,$allnull,$file,$count); if ($count>0){ die("no inclution, go out"); }