我觉得现在师傅们如果针对文件读取/下载漏洞的挖掘,黑盒情况下就是找可以下载文件,读取文件的功能点,进行抓包,替换"filename",使用../../或者绝对路径来定位想要读取的文件。
白盒情况下就是全局搜索读取文件的几个函数,之后判断所要读取的文件参数是否可控等等等.....
我先描述一下文件读取的几个函数和用法,再来给大家分享一下容易被忽略的点。
file_get_contents()
file_get_contents() 函数用于读取整个文件为一个字符串,并返回该字符串。以下是 file_get_contents() 函数的基本用法:
$fileContent = file_get_contents('path/to/file.txt');
echo $fileContent;
上述代码将读取指定路径下的文件 "file.txt" 的内容,并将内容存储在变量 $fileContent 中。然后使用 echo 语句将文件内容输出到浏览器。
fread()
file_get_contents() 函数用于读取整个文件为一个字符串,并返回该字符串。以下是 file_get_contents() 函数的基本用法:
$handle = fopen('path/to/file.txt', 'r');
$data = fread($handle, 1024);
fclose($handle);
echo $data;
在上面的示例中,首先使用 fopen() 函数打开了一个文件 "file.txt",并传递了 'r' 参数,表示以只读模式打开文件。然后使用 fread() 函数读取文件内容,并将读取的数据存储在变量 $data 中。最后使用 fclose() 函数关闭文件句柄。
readfile()
readfile() 函数用于读取文件内容并输出到浏览器或保存到文件。以下是 readfile() 函数的基本用法:
readfile('path/to/file.txt');
上述代码将直接输出指定路径下的文件 "file.txt" 的内容到浏览器。
fgets()
fgets() 函数用于从打开的文件中逐行读取数据。以下是 fgets() 函数的基本用法:
$handle = fopen('path/to/file.txt', 'r');
if ($handle) {
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
}
在上述示例中,首先使用 fopen() 函数以只读方式打开文件 "file.txt" 并返回文件句柄 $handle。然后通过 while 循环和 fgets() 函数逐行读取文件内容,直到文件末尾。每次 fgets() 调用都会将文件指针移动到下一行,并返回当前行的内容(包括换行符)。最后使用 fclose() 函数关闭文件句柄。
file()file()
函数可以用于将整个文件读取为数组,每一行作为数组的一个元素。以下是 file()
函数的基本用法:
$lines = file('path/to/file.txt');
foreach ($lines as $line) {
echo $line;
}
在上述示例中,file() 函数会将文件 "file.txt" 的内容读取到数组 $lines 中。每一行文本都作为数组的一个元素。然后可以使用 foreach 循环遍历数组,并将每行内容输出。
其实还有一个小功能点可以去读取文件,我放一张图师傅们就懂了。这是一个互联网已经公开的漏洞,但是这个读取的点很奇特,所以拿出来给大家看一下。
是的没错,这个漏洞的成因,就是通过curl功能点实现了文件读取功能。
大部分师傅碰到curl,基本都当成和wget类似的下载的功能点,其实curl也可以进行文件读取。
curl file:///etc/passwd 即可读取文件
要注意的是,这个可不是PHP的伪协议,在 curl 命令中,file:///etc/passwd
表示要获取本地文件系统上 /etc/passwd
文件的内容,并将其输出到标准输出。这里的 file://
是 curl 支持的一种协议,用于读取本地文件。类似地,curl 还支持许多其他协议,如 HTTP、FTP 等。
所以这个漏洞的payload大家肯定也弄得出来
$poi = input('post.poi'); //post获取poi的值
$url = trim($poi); //对输入的poi的值去空
$info = curl_init(); //开启一个curl命令
注:如有侵权请后台联系进行删除
觉得内容不错,请点一下"赞"和"在看"
1、公众号后台回复:搜索大法,获取searchall工具下载链接。
2、公众号后台回复:靶场,获取靶场工具网盘下载链接。
3、公众号后台回复:webshell,获取webshell下载链接。
4、公众号后台回复:验证码,获取验证码工具下载链接。
5.公众号后台回复:应急响应,获取应急响应网盘下载链接。
6.公众号后台回复:CS,获取CS渗透工具包网盘下载链接。
7.公众号点菜单栏"工具合集",后台回复"嗨"即可获取!