//build an include-path from the url-request
else {
$loadme = "inc/backend_" . $_GET['page'] . ".php";
}
//yee-hah! finally we do show real content on our page!
include ($loadme);
?>
这段法式很复杂却包括了一个恐怖的破绽,变量$page是咱们GET上去的,假如没有设置page参数,法式就主动包括inc/backend_postings.php这个文件,假如有page参数就把$page的值放到inc目次下以backend_前缀开首的文件构成一个新的文件.这里并没有对$page的值做任何的过滤,招致咱们可以遍历一切文件了.
这里要注重的是,咱们提交的$page的值会主动的加上php后缀,所以咱们浏览php文件是不会无效果的.固然咱们可以读一些设置装备摆设文件也是很有效的.上面就来测试一下,咱们在inc目次外创立一个 TXT文件,内容为Wh0 !s H4K_BaN?咱们提交以下URL看看了局:
http://localhost/loudblog/loudblog/loudblog/index.php?page=/../../hello.txt%00这里要说的是因为变量会加上php后缀,所以咱们要用%00来截断后缀如许才干正常显示文件内容,了局如图1
测试胜利申明破绽存在了,那咱们接着读一些敏感文件吧,提交以下URL:
http://localhost/loudblog/loudblog/loudblog/index.php?page=/../../../../../../conf/httpd.conf%00了局如图2
APACHE的设置装备摆设文件也顺遂读出来了,接上去就来看别的一种情形.
这类破绽次要是存在与基于PHP+TXT布局的法式中,破绽代码也是来自于一个国外的BLOG,代码以下: