让php程序可以自行扩展自己功能的代码初步分析

需要创建3个文件,分别命名为 r.php t.php w.php ,然后将以下代码保存到r.php文件中即可.


//生成需要执行的字符串

$s = array('+','-','*','/');

$dux = '

$myfile = fopen("w.php", "w") or die("Unable to open file!");

';

$duc = '$ttt='.mt_rand(1,10).$s[mt_rand(0,3)].mt_rand(1,10).';';

$duv = '

fwrite($myfile, $ttt);

fclose($myfile);

$myfile = fopen("w.php", "r") or die("Unable to open file!");

$du = fread($myfile,filesize("w.php"));

echo "读取文件:".$du;

fclose($myfile);

';

//将该字符串写入t文件,当然也可以不写入文件

$myfile = fopen("t.php", "w") or die("Unable to open file!");

fwrite($myfile, $dux);

fwrite($myfile, $duc);

fwrite($myfile, $duv);

fclose($myfile);

//读取t文件

$myfile = fopen("t.php", "r") or die("Unable to open file!");

$du = fread($myfile,filesize("t.php"));

fclose($myfile);

//执行t文件的代码

echo '本次算术php代码 : '.$duc.'
';

eval($du);

echo '
读取文件是已经执行代码后的结果
';

工作模式:

该程序有三个文件,分别为:

r.php 主程序,用来生成可执行代码并写入t文件;读取t文件的内容并执行,将执行结果写入w文件.

t.php文件 该文件内容不可执行,只能被其他文件读取.同样w.php文件用于保存r.php执行t.php后的结果

通过修改php文件,并使用eval函数执行修改后的代码,就可以实现原本没有设定的程序功能

如果程序足够聪明,能写出正确的php代码,那么它就可以自行扩展自己的能力,实现原本不可能完成的任务.

在本例中,r文件只做一件事,就是写文件和读取文件,并执行读取出来的内容.并没有对应的计算代码

你可以会说最终还是用eval执行了代码,其实也可以完全不用eval函数,在这里使用只是为了方便.我们完全可以将内容写进标签里去.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,137评论 4 97
  • 一、会话控制(session与cookie) 1.cookie简介 Cookie是存储在客户端浏览器中的数据,我们...
    空谷悠阅读 646评论 0 5
  • 架构师必须知道的26项PHP安全实践 PHP是一种开源服务器端脚本语言,应用很广泛。Apache web服务器提供...
    meng_philip123阅读 6,103评论 1 161
  • 当应用程序接收到内存警告的时候怎么处理? 答:当收到内存警告的时候,应用程序会将警告一级一级往下传递,传递顺序是U...
    ___1o_8o阅读 433评论 0 0
  • 我们预设爱的消亡是极端的痛苦 却从不正视它的狡猾 我们本能地反抗自我修复 沉溺于甜腻的回想 一幕幕 ——《甜沉》 ...
    段童阅读 220评论 0 1