曲径通幽论坛
标题:
使用 load_file() 函数读取文件内容
[打印本页]
作者:
beyes
时间:
2013-9-13 16:35
标题:
使用 load_file() 函数读取文件内容
load_file() 函数的原型为 load_file(file_name) 。它读取文件并将这一文件按照字符串的格式返回。文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有 FILE 权限。文件必须可读取,文件容量必须小于 max_allowed_packet 字节。
若文件不存在,或因不满足上述条件不能被读取,函数返回 NULL。
下面演示利用该文件获取数据库的用户名和密码。
在一些网站中,有一个配置文件,数据库的用户和密码信息都会写到里头,我们这里就利用 load_file() 函数来读取到这些关键的信息。
由于 load_file() 的参数是个绝对路径,因此可以先用单引号等方法让网页出错,这时往往会爆出网站的物理途径,如下图所示:
[attach]1910[/attach]
由上面可以看到,网站的绝对物理路径已经暴露出来。下面就用 load_file() 来读取一个页面,然后从中 找到和数据库交互的信息。如下图提交的语句:
[attach]1911[/attach]
这样一来,页面代码(一般是部分)会显示在网页上,看上去会比较凌乱,如下图所示:
[attach]1912[/attach]
在上面所提交的 URL 中,load_file() 的参数用十六进制来表示,它对应原本的字符串为:E:\phpStudy\WWW\ch14\news\show_news.php 。转换字符串有多种工具,也可以使用
http://www.groad.net/bbs/read.php?tid-8000.html
这里提供的工具,但要小心使用。
为了更方便读取 show_news.php 这个文件的内容,可以读取上面错乱页面的代码,然后从中寻找相关的信息。从源码中发现了一处关键语句:
[attach]1913[/attach]
上面包含了 dbtools.inc.php 这个文件,这个就是数据库配置文件了。因为你在 show_news.php 中会执行到数据库的查询语句,必然会先连接数据库,因此若本文件中若没有相关语句,那么它就会被别的文件锁包含。下面用同样的方法读取这个 dbtools.inc.php ,如下提交语句:
[attach]1914[/attach]
然后会看到暴出的代码信息:
[attach]1915[/attach]
从上面可以看到,连接数据库的是 root 用户,密码也直接给了出来。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2