by:风之传说 今天分析了两个程序,都发了吧。
好吧,我承认有点鸡肋。。 我们先来看看这个文件 /common.function.php 01functionwrite_file($l1,$l2=''){ //写文件 02 $dir= dirname($l1); 03 if(!is_dir($dir)){ 04 mkdirss($dir); 05 } 06 return@file_put_contents($l1,$l2 ); 07} 08functionread_file($l1){ 09 return@file_get_contents($l1 ); 10} 11// 数组保存到文件 12functionarr2file($filename,$arr=''){ 13 if(is_array($arr)){ 14 $con= var_export($arr,true); 15 }else{ 16 $con=$arr; 17 } 18 $con="<?php\nreturn $con;\n?>";//\n!defined('IN_MP') && die();\nreturn $con;\n 19 write_file($filename,$con); 20} 上面是定义的函数,我们主要看write_file这个函数,OK我们再来看看后台的一个文件l admin\module\extendMod.class.php 1$array=$_POST; //POST提交的数组赋值给$array 2 if(!empty($array['ads_name_sub'])){ 3 if($this->model->table('ads')->where(' adsname="'.trim($_POST['ads_name_sub']).'"')->find()){ 4 $this->error('该广告标识已经存在,请重新填写一个广告标识!'); 5 } 6 $data['adsname'] = trim($array['ads_name_sub']); //文件名 7 $data['adscontent'] =stripslashes(trim($array['ads_content_sub'])); //内容 8 $this->model->table('ads')->data($data)->insert($data); 9 write_file(ROOT_PATH.'/data/ads/'.$data['adsname'].'.js',t2js($data['adscontent'])); //写SHELL 进入后台,然后浏览 http://www.2cto.com /admin/index.php/extend/ads.html 然后广告识别码填:1.php
广告内容填:<?phpinfo();?>
然后访问 http://www.2cto.com /data/ads/1.php.js 就可以看到我们可爱的马了。当然1.php.js这样的解析得看环境了。
所以说鸡肋,但是也是拿SHELL的一种方法。
修复:过滤这两项输入内容
查看更多关于星光贴吧1.3 后台拿SHELL及修复方案 - 网站安全的详细内容...