### 简要描述: 现在 V8版本 基本全部文件都有zend加密了。 只有那么少数的几个文件没加密。。 我就看看那几个把。。 ### 详细说明: 在inc/user/alipay/notify_url.php中 ``` $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); $verify_result_2 = $alipayNotify->verifyReturn(); if($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; if($_POST['trade_status'] == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success";//请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS' ||...
### 简要描述: 现在 V8版本 基本全部文件都有zend加密了。 只有那么少数的几个文件没加密。。 我就看看那几个把。。 ### 详细说明: 在inc/user/alipay/notify_url.php中 ``` $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); $verify_result_2 = $alipayNotify->verifyReturn(); if($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; if($_POST['trade_status'] == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success";//请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $_POST['trade_status'] == 'TRADE_FINISHED') { //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 $db = new AppDb($MAC['db']['server'],$MAC['db']['user'],$MAC['db']['pass'],$MAC['db']['name']); $sql ='select * from {pre}user_pay where p_status=0 and p_order='.$out_trade_no; $row = $db->getRow($sql); if($row){ $point = $row['p_point']; $db->query("update {pre}user set u_points=u_points+".$point." where u_id = ". $row["p_uid"]); $db->query("update {pre}user set p_status=1 where p_order=".$out_trade_no); } ``` alipay的验证。 我们就来满足这个验证就行了。 ``` function verifyNotify(){ if(empty($_POST)) {//判断POST来的数组是否为空 return false; } else { //生成签名结果 $isSign = $this->getSignVeryfy($_POST, $_POST["sign"]); //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息) $responseTxt = 'true'; if (! empty($_POST["notify_id"])) {$responseTxt = $this->getResponse($_POST["notify_id"]);} //写日志记录 //if ($isSign) { //$isSignStr = 'true'; //} //else { //$isSignStr = 'false'; //} //$log_text = "responseTxt=".$responseTxt."\n notify_url_log:isSign=".$isSignStr.","; //$log_text = $log_text.createLinkString($_POST); //logResult($log_text); //验证 //$responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (preg_match("/true$/i",$responseTxt) && $isSign) { return true; } else { return false; } } } ``` 必须两个都匹配出true。 ``` function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5" : $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; default : $isSgin = false; ``` 然后就是md5一次。 相等则true。 ### 漏洞证明: [<img src="https://images.seebug.org/upload/201403/1611422045aae047a61d64e2da00eafc834e6765.jpg" alt="90.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/1611422045aae047a61d64e2da00eafc834e6765.jpg) 来看看执行的语句。 [<img src="https://images.seebug.org/upload/201403/161142333a5e043dfd45c206ab5eddf8d760a181.jpg" alt="91.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/161142333a5e043dfd45c206ab5eddf8d760a181.jpg)