Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[疑难] 晒秘密插件的一个程序漏洞,懂程序的进来帮忙改进一下!

[复制链接]
剑雨琴侠 发表于 2009-6-19 12:49:58 | 显示全部楼层 |阅读模式
本帖最后由 剑雨琴侠 于 2009-6-19 12:58 编辑

这几天下载了晒秘密的插件,冰凉秘密和私房话版本的都结合使用了,发现两程序都存在一个暴露参与者身份的问题,就是在随便看看页面中的最新动态中,参与秘密的动态信息为“有人偷偷参与了某个秘密”,里面有参与者个人主页的链接,这样就暴露了参与者的身份以及内容。

本站地址:
http://www.sxlxh.com/home



问题应该出在mimi_cp.php这个程序中,调试好多次就是不成功!问题应该出在title_template、uid这几个关键位置,知道问题所在的帮忙解决一下!谢谢!

原来的帖子:
https://discuz.dismall.com/viewthread.php?tid=1148504
https://discuz.dismall.com/viewthread.php?tid=1147811
https://discuz.dismall.com/viewthread.php?tid=1290089
 楼主| 剑雨琴侠 发表于 2009-6-19 13:16:43 | 显示全部楼层
下面是mimi_cp.php文件的源码

  1. <?php
  2. include_once(S_ROOT.'./source/function_edit_credit.php');
  3. $op = $_GET['op'];
  4. if (empty($op)) {
  5.         showmessage('未定义的方法');
  6. }

  7. if ('post' == $op) {       
  8.         $title = trim($_POST['title']);
  9.         if (empty($title) || empty($_POST['content']) || empty($_SGLOBAL['supe_username'])) {
  10.                 showmessage("标题内容或用户名不能为空");
  11.         }
  12.         $post_mimi_id = intval($_POST['mimi_id']);
  13.         //修改
  14.         if ($post_mimi_id > 0) {
  15.                 $data = array(
  16.                         'title' => shtmlspecialchars($title),
  17.                         'content' => trim($_POST['content']),
  18.                         'typeid' =>  intval($_POST['typeid']),
  19.                         'typeid2' =>  intval($_POST['typeid2'])
  20.                  );
  21.                  updatetable("app_mimi", $data, "id = {$post_mimi_id}");
  22.                  showmessage("修改成功!", "mimi.php?do=mimi&ac=view&id={$post_mimi_id}");
  23.         }
  24.         $data = array(
  25.                 //'uid' => $_SGLOBAL['supe_uid'],
  26.                 //'username' => $_SGLOBAL['supe_username'],
  27.                 'title' => shtmlspecialchars($title),
  28.                 'content' => trim($_POST['content']),
  29.                 'typeid' =>  intval($_POST['typeid']),
  30.                 'typeid2' =>  intval($_POST['typeid2']),
  31.                 'dateline' => $_SGLOBAL['timestamp'],
  32.                 'status' => 1
  33.          );

  34.         $mimi_id = inserttable('app_mimi', $data, 1);
  35.         $_SGLOBAL['db']->query("UPDATE ".tname('space')." SET credit=credit+1 WHERE uid='$_SGLOBAL[supe_uid]'");

  36.         //事件feed
  37.         $fs = array();
  38.         $fs['icon'] = 'mimi';
  39.     $fs['title_template'] = "有人偷偷发表了题为 <b>{subject}</b> 的<a href=http://www.sxlxh.com/home/mimi.php>秘密</a>!";

  40.         if ($title != '') {
  41.         $fs['title_data'] = array(
  42.                 'subject' => "<a href="mimi.php?do=mimi&ac=view&id={$mimi_id}">{$title}</a>"
  43.                 //'score' => $score
  44.         ); }else{
  45.                 $fs['title_data'] = array(
  46.                 'subject' => "<a href="mimi.php?do=mimi&ac=view&id={$mimi_id}">秘密#{$mimi_id}</a>"
  47.                 );
  48.         }

  49.         $fs['body_template'] = '';
  50.         $fs['body_data'] = array();
  51.        
  52.         include_once(S_ROOT.'./source/function_cp.php');
  53. //事件发布(只显示到首页,但不显示到个人空间)
  54. function feed_add_nospace($icon, $title_template='', $title_data=array(), $body_template='', $body_data=array(), $body_general='', $images=array(), $image_links=array(), $target_ids='', $friend='', $appid=UC_APPID, $returnid=0) {
  55.         global $_SGLOBAL;

  56.         $feedarr = array(
  57.                 'appid' => $appid,//获取appid myop为0
  58.                 'icon' => $icon,
  59.                 //'uid' => $_SGLOBAL['supe_uid'],
  60.                 //'username' => $_SGLOBAL['supe_username'],
  61.                 'dateline' => $_SGLOBAL['timestamp'],
  62.                 'title_template' => $title_template,
  63.                 'body_template' => $body_template,
  64.                 'body_general' => $body_general,
  65.                 'image_1' => empty($images[0])?'':$images[0],
  66.                 'image_1_link' => empty($image_links[0])?'':$image_links[0],
  67.                 'image_2' => empty($images[1])?'':$images[1],
  68.                 'image_2_link' => empty($image_links[1])?'':$image_links[1],
  69.                 'image_3' => empty($images[2])?'':$images[2],
  70.                 'image_3_link' => empty($image_links[2])?'':$image_links[2],
  71.                 'image_4' => empty($images[3])?'':$images[3],
  72.                 'image_4_link' => empty($image_links[3])?'':$image_links[3],
  73.                 'target_ids' => $target_ids,
  74.                 'friend' => $friend
  75.         );
  76.         $feedarr = sstripslashes($feedarr);//去掉转义
  77.         $feedarr['title_data'] = serialize(sstripslashes($title_data));//数组转化
  78.         $feedarr['body_data'] = serialize(sstripslashes($body_data));//数组转化
  79.         $feedarr['hash_template'] = md5($feedarr['title_template']."\t".$feedarr['body_template']);//喜好hash
  80.         $feedarr['hash_data'] = md5($feedarr['title_template']."\t".$feedarr['title_data']."\t".$feedarr['body_template']."\t".$feedarr['body_data']);//合并hash
  81.         $feedarr = saddslashes($feedarr);//增加转义
  82.        
  83.         //去重
  84.         $query = $_SGLOBAL['db']->query("SELECT feedid FROM ".tname('feed')." WHERE uid='$feedarr[uid]' AND hash_data='$feedarr[hash_data]' LIMIT 0,1");
  85.         if($oldfeed = $_SGLOBAL['db']->fetch_array($query)) {
  86.                 updatetable('feed', $feedarr, array('feedid'=>$oldfeed['feedid']));
  87.                 return 0;
  88.         }
  89.        
  90.         if($returnid) {
  91.                 return inserttable('feed', $feedarr, $returnid);
  92.         } else {
  93.                 inserttable('feed', $feedarr);
  94.         }

  95. }

  96. feed_add_nospace($fs['icon'], $fs['title_template'], $fs['title_data'], $fs['body_template'], $fs['body_data'], $fs['body_general'],$fs['images'], $fs['image_links'], $fs['target_ids'], $fs['friend']);

  97.         updatecredit($_SGLOBAL['supe_uid'], $score, '-');
  98.         showmessage("秘密说出来,舒服了吧?", "mimi.php?do=mimi&ac=view&id={$mimi_id}");
  99. }
  100. elseif ('reply' == $op )       
  101. {
  102.         $mimi_id = intval($_POST['mimi_id']);
  103.         $mimi_title = trim($_POST['mimi_title']);
  104.         $mimi_uid = intval($_POST['mimi_uid']);
  105.         if (empty($mimi_id)) {
  106.                 showmessage("参数错误");
  107.         }
  108.         $content = trim($_POST['content']);
  109.         if (empty($content) ) {
  110.                 showmessage("回复内容不能为空");
  111.         }

  112.         $data = array(
  113.                 'uid' => $_SGLOBAL['supe_uid'],
  114.                 'username' => $_SGLOBAL['supe_username'],
  115.                 'content' => trim($_POST['content']),
  116.                 'mimi_id' => $mimi_id,
  117.                 'typeid2' =>  intval($_POST['typeid2']),
  118.                 'dateline' => $_SGLOBAL['timestamp']
  119.          );
  120.         $reply_id = inserttable('app_mimi_reply', $data, 1);
  121.        
  122.         //更新回复数
  123.         $sql = "UPDATE ".tname("app_mimi")." SET reply_count = reply_count + 1 WHERE id = ".$mimi_id;
  124.         $_SGLOBAL['db']->query( $sql );
  125.        

  126.         if ($mimi_uid !=  $_SGLOBAL['supe_uid']) {               
  127.                 //通知
  128.                 include_once(S_ROOT.'./source/function_cp.php');
  129.                
  130.                 $message = "参与了您发表的秘密 <a href='http://www.sxlxh.com/home/mimi.php?do=mimi&ac=view&id=".$mimi_id."'>".$mimi_title."</a>";

  131.             notification_add($mimi_uid, app, $message);
  132.         }
  133.        
  134.    
  135.     //事件feed
  136.     $icon = 'mimi';
  137.     $title_template = "有人悄悄的参与了秘密 <b><a href='http://www.sxlxh.com/home/mimi.php?do=mimi&ac=view&id=".$mimi_id."'>".$mimi_title."</a></b>";
  138.     feed_add($icon, $title_template);
  139.    
  140.    
  141.         showmessage("秘密参与成功", $theurl, 1);               
  142. }
  143. elseif ('finish' == $op)
  144. {
  145.         $mimi_id = intval($_POST['mimi_id']);
  146.         $theurl = trim($_POST['theurl']);
  147.        
  148.         //获取信息
  149.         $sql = "SELECT * FROM ".tname("app_mimi")." WHERE id= $mimi_id AND uid = ".$_SGLOBAL['supe_uid'] ;
  150.         $query = $_SGLOBAL['db']->query( $sql );
  151.         $mimi = $_SGLOBAL['db']->fetch_array( $query );
  152.         if (empty($mimi)) {
  153.                 showmessage("信息不存在或者已经被删除", 'mimi.php?do=mimi');
  154.         }       
  155.         if (2 == $mimi['status']) {
  156.                 showmessage("此问题已经结贴。请不要重复提交。");
  157.         }
  158.         $pscore = $_POST['score'];
  159.         if ($mimi['score'] != array_sum($pscore) ) {
  160.                 showmessage("悬赏分与分配的分值不一致");
  161.         }
  162.        
  163.         foreach ($pscore as $key => $val) {
  164.                 $sql = "UPDATE ".tname('app_mimi_reply')." SET score = ".intval($val)." WHERE id =".$key;
  165.                 $_SGLOBAL['db']->query($sql);
  166.         }       

  167.         $sql = "SELECT * FROM ".tname('app_mimi_reply')." WHERE mimi_id = $mimi_id ";
  168.         $query = $_SGLOBAL['db']->query($sql);
  169.         $list = array( );
  170.         while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
  171.         {
  172.                 $list[$value['uid']]['fen'] = intval($list[$value['uid']]['fen']) +  $value['score'];
  173.                 //$list[$value['uid']]['username'] = $value['username'];
  174.         }
  175.        
  176.         $arr_fedd_str = "";
  177.         include_once(S_ROOT.'./source/function_cp.php');
  178.         foreach ($list as $key => $val) {
  179.                 if (empty($val['fen'])) {
  180.                         continue;
  181.                 }
  182.                 updatecredit($key, $val['fen'], '+');
  183.                
  184.                 $arr_fedd_str[] =  "<a href='space.php?uid=0'>{$val['username']}</a>: {$val['fen']}分 ";
  185.                
  186.                 $message = "对 <a href="mimi.php?do=mimi&ac=view&id={$mimi_id}">{$mimi['title']}</a> 做了结贴,您获得了 {$val['fen']}分。";
  187.             notification_add($key, "app", $message );
  188.         }
  189.        
  190.         $sql = "UPDATE ".tname("app_mimi")." SET status='2', msg='". addslashes(implode(",", $arr_fedd_str))."' WHERE id = $mimi_id ";
  191.         $_SGLOBAL['db']->query($sql);
  192.        
  193.        
  194.         //事件feed
  195.         $fs = array();
  196.         $fs['icon'] = 'mimi';
  197.     $fs['title_template'] = "{actor} 对问答 <b>{subject}</b> 做了结贴,给分情况: ". implode(",", $arr_fedd_str);
  198.        
  199.         $fs['title_data'] = array(
  200.                 'subject' => "<a href="mimi.php?do=mimi&ac=view&id={$mimi_id}">{$mimi['title']}</a>"
  201.         );
  202.         $fs['body_template'] = '';
  203.         $fs['body_data'] = array();
  204.         include_once(S_ROOT.'./source/function_cp.php');
  205.         feed_add_nospace($fs['icon'], $fs['title_template'], $fs['title_data'], $fs['body_template'], $fs['body_data'], $fs['body_general'],$fs['images'], $fs['image_links'], $fs['target_ids'], $fs['friend']);
  206.        
  207.        
  208.         showmessage("恭喜您,结贴成功。", $theurl);
  209. }
  210. elseif ('delete' == $op)
  211. {
  212.         $mimi_id = intval($_GET['id']);
  213.         if (empty($mimi_id)) {
  214.                 showmessage("参数错误");
  215.         }
  216.         $sql = " select * from ".tname('app_mimi')." where id = ".$mimi_id." ";
  217.         $query = $_SGLOBAL['db']->query( $sql );
  218.         $info = $_SGLOBAL['db']->fetch_array( $query );
  219.         $u_ser_id = $info[uid];
  220.         if (empty($info))
  221.         {
  222.                 showmessage("信息不存在或者已经被删除", 'mimi.php?do=mimi');
  223.         }
  224.         if ( $_SGLOBAL['supe_uid'] != $info['uid'] &&  $_SGLOBAL['supe_uid'] != ADMIN_ID ) {
  225.                 showmessage("您没有删除此问答的权限", 'mimi.php?do=mimi');
  226.         }

  227.         $sql = "DELETE FROM ".tname('app_mimi')." WHERE id = {$mimi_id} ";
  228.         $query = $_SGLOBAL['db']->query($sql);
  229.         $sql = "DELETE FROM ".tname('app_mimi_reply')." WHERE mimi_id = {$mimi_id} ";
  230.         $query = $_SGLOBAL['db']->query($sql);       
  231.        
  232.         $_SGLOBAL['db']->query("UPDATE ".tname('space')." SET credit=credit-1 WHERE uid={$u_ser_id}");
  233.        
  234.         showmessage("删除成功!", "mimi.php?do=mimi", 0);
  235. }
  236. elseif ('replydelete' == $op)
  237. {
  238.         $mimi_id = intval($_GET['mimi_id']);
  239.         $id = intval($_GET['id']);
  240.         if (empty($mimi_id) || empty($id)) {
  241.                 showmessage("参数错误");
  242.         }

  243.         $sql = " select * from ".tname('app_mimi_reply')." where id = ".$id." ";
  244.         $query = $_SGLOBAL['db']->query( $sql );
  245.         $info = $_SGLOBAL['db']->fetch_array( $query );
  246.         if (empty($info))
  247.         {
  248.                 showmessage("信息不存在或者已经被删除", 'mimi.php?do=mimi');
  249.         }
  250.         if ( $_SGLOBAL['supe_uid'] != $info['uid'] &&  $_SGLOBAL['supe_uid'] != ADMIN_ID ) {
  251.                 showmessage("您没有删除的权限", 'mimi.php?do=mimi');
  252.         }

  253.         $sql = "DELETE FROM ".tname('app_mimi_reply')." WHERE id = {$id} ";
  254.         $query = $_SGLOBAL['db']->query($sql);       
  255.         showmessage("删除成功!", "mimi.php?do=mimi&ac=view&id={$mimi_id}");
  256. }
复制代码
回复

使用道具 举报

 楼主| 剑雨琴侠 发表于 2009-6-19 15:25:49 | 显示全部楼层
晕  给四五个版主发了短消息 也没有人过来帮一把  
回复

使用道具 举报

daymake 发表于 2009-6-19 15:26:42 | 显示全部楼层
慢慢等等吧
回复

使用道具 举报

 楼主| 剑雨琴侠 发表于 2009-6-20 11:29:57 | 显示全部楼层
晕  这样的秘密谁敢晒啊
回复

使用道具 举报

 楼主| 剑雨琴侠 发表于 2009-6-21 23:27:51 | 显示全部楼层
晕 列表里面都找不到了 顶起
回复

使用道具 举报

 楼主| 剑雨琴侠 发表于 2009-6-25 09:33:19 | 显示全部楼层
我继续顶!!!
回复

使用道具 举报

heye521 发表于 2009-7-22 02:31:49 | 显示全部楼层
害怕呀哈啊
回复

使用道具 举报

wkl17 发表于 2009-7-28 14:19:56 | 显示全部楼层
看得出楼主很用心。。。我也是。。哈哈。。但是我只能帮顶了。。。
回复

使用道具 举报

wkl17 发表于 2009-7-28 14:21:53 | 显示全部楼层
https://discuz.dismall.com/viewthread.php?tid=1290089
一楼最底部有这一句话:插件爱好者请加我QQ:280392287  交流意见!

加入去和群主谈谈??(如果有结果了要分享一下哈。。。)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 22:24 , Processed in 0.034199 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表