### 简要描述: 看到官网上又更新了 2014-2-25 加强了SQL安全注入。特别感谢白帽子:(′ 雨。、C4nf3ng、Jim叔叔、寂寞的瘦子、lxj616 )对程序的漏洞检测。 还感谢了各白帽子啊 还不错。 那就继续挖挖? ### 详细说明: 在user\pay.php中 ``` public function tenpay_return_url() { require_once (CSCMSPATH."tenpay/ResponseHandler.class.php"); $resHandler = new ResponseHandler(); $resHandler->setKey($key); //判断签名 if($resHandler->isTenpaySign()) { //通知id $notify_id = $resHandler->getParameter("notify_id"); //商户订单号 $out_trade_no = $resHandler->getParameter("out_trade_no"); //财付通订单号 $transaction_id = $resHandler->getParameter("transaction_id"); //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee $discount = $resHandler->getParameter("discount"); //支付结果 $trade_state = $resHandler->getParameter("trade_state"); //交易模式,1即时到账 $trade_mode = $resHandler->getParameter("trade_mode"); if("1" == $trade_mode ) { if( "0" == $trade_state){ $row=$this->db->query("select CS_RMB from ".CS_SqlPrefix."pay where CS_Dingdan='".$out_trade_no."'")->row(); if(!$row){...
### 简要描述: 看到官网上又更新了 2014-2-25 加强了SQL安全注入。特别感谢白帽子:(′ 雨。、C4nf3ng、Jim叔叔、寂寞的瘦子、lxj616 )对程序的漏洞检测。 还感谢了各白帽子啊 还不错。 那就继续挖挖? ### 详细说明: 在user\pay.php中 ``` public function tenpay_return_url() { require_once (CSCMSPATH."tenpay/ResponseHandler.class.php"); $resHandler = new ResponseHandler(); $resHandler->setKey($key); //判断签名 if($resHandler->isTenpaySign()) { //通知id $notify_id = $resHandler->getParameter("notify_id"); //商户订单号 $out_trade_no = $resHandler->getParameter("out_trade_no"); //财付通订单号 $transaction_id = $resHandler->getParameter("transaction_id"); //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee $discount = $resHandler->getParameter("discount"); //支付结果 $trade_state = $resHandler->getParameter("trade_state"); //交易模式,1即时到账 $trade_mode = $resHandler->getParameter("trade_mode"); if("1" == $trade_mode ) { if( "0" == $trade_state){ $row=$this->db->query("select CS_RMB from ".CS_SqlPrefix."pay where CS_Dingdan='".$out_trade_no."'")->row(); if(!$row){ $this->CsdjSkins->Msg_url('验证失败,该定单不存在!',site_url('user')); } $this->CsdjSkins->Msg_url('恭喜您,成功充值了 '.$row->CS_RMB.' 元,若出现问题请尽快联系客服,请牢记您的定单号:'.$out_trade_no.'!',site_url('user')); } else { //当做不成功处理 echo "<br/>" . "即时到帐支付失败" . "<br/>"; } }elseif( "2" == $trade_mode ) { if( "0" == $trade_state) { echo "<br/>" . "中介担保支付成功" . "<br/>"; } else { echo "<br/>" . "中介担保支付失败" . "<br/>"; } } } else { echo "<br/>" . "认证签名失败" . "<br/>"; echo $resHandler->getDebugInfo() . " "; ``` getParameter 就相当request把? 这里是没有过滤的。 但是有点验证。 ``` function isTenpaySign() { $signPars = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { if("sign" != $k && "" != $v) { $signPars .= $k . "=" . $v . "&"; } } $signPars .= "key=" . $this->getKey(); $sign = strtolower(md5($signPars)); $tenpaySign = strtolower($this->getParameter("sign")); //debug信息 $this->_setDebugInfo($signPars . " => sign:" . $sign . " tenpaySign:" . $this->getParameter("sign")); return $sign == $tenpaySign; } ``` 相等即可。 Come and Sql it. ### 漏洞证明: [<img src="https://images.seebug.org/upload/201402/282150360d2ac74a6fb0b09ab9ca2f8596a1aa22.jpg" alt="K3I{I61$J@MC{OH8F4D1RTD.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/282150360d2ac74a6fb0b09ab9ca2f8596a1aa22.jpg) 官网测试成功。 还可以充值任意金额。