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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

黑道生涯3.0 修正版 FOR DZ6.x和DZ7.0 (含源代码) 最新发布下载(2009-8-1)

[复制链接]
Ricky_Yahoo 发表于 2009-7-27 20:51:04 | 显示全部楼层 |阅读模式
插件发布
插件名称: 黑道生涯3.0 修正版
插件来源:
适用版本: Discuz! 6.1
语言编码: GBK简体 UTF8简体 BIG5繁体 
最后更新时间:
插件作者: Ricky Lee
插件简介: 进入游戏后, 每个会员会以一个刚出道的小混混, 在黑道生涯中闯出一番新天地来, 你可以打劫会员, 如果怕得罪人你就打劫NPC, 打劫一下珠宝店之类的. 或者找几个同伙一起打劫会员,怕被其他人欺负吗? 赶紧找个靠山,加入其中一个社团,跟着老大一起去打劫银行和 PK,告诉老大谁欺负你,叫老大帮你出头。你还可以每个星期领取工资,但是你必须要上缴保护费。一旦你条件具备, 在黑道中有足够的声望和民心,你也可以自己建立社团, 体验一下做黑帮老大的感觉。 从此收取小弟的保护费, 打劫银行以及社团间的斗殴(PK)等等, 当做了黑帮老大后, 你会获得黑帮老大的勋章用以告知你是黑道社会里面的帮派老大, 带领小弟们一起打劫银行。 正所谓: 不求同年同日生, 但求同年同日同分同秒坐牢,一起享受监狱里面的心酸苦辣.
本帖最后由 Ricky_Yahoo 于 2009-7-31 19:35 编辑

最新放出的FOR DZ7.0 版本其实也不算是完全融合的DZ7.0版本, 其实还是DZ6.1的黑道, 只不过是额外提供了原有黑道的CSS样式, 让在DZ7.0下也可以正常显示而已, 不是完全的DZ7.0版本,不过对于一些热衷黑道的忠实站 长想在7.0下面继续使用黑道的话也是一个比较好的折衷的办法.


如果你之前安装了for dz6.x的版本在dz7.0下面,只要把全部文件覆盖即可.


其实我也很久没有怎么更新黑道生涯了, 不管怎么说, 黑道生涯都是我开发DISCUZ插件中一个非常重要的过渡阶段。所以我也没有放弃黑道生涯, 今天论坛有朋友和大家宣布黑道生涯插件有注入的漏洞, 我搜索了一下GOOGLE, 也看到所谓的注入漏洞是在哪里发生, 我今天就把全部的代码重新看了一遍, 把可能引起注入漏洞的地方都处理了, 做了一个修正的版本.

本来想继续加密的, 不过想了想也没有那个必要, 我也在这里声明, 我公开了3.0的源代码, 希望大家一起来更新这个插件, 不管怎样修改, 请把版权留下来就好了.

这个修正版我已经把有可能导致注入漏洞的地方都修正了, 也过滤了一遍所有的变量. 我只对3.0进行修正, 请使用3.0以前版本的用户尽快升级到3.0 修正版, 以免造成不必要的损失。

同时, 我还是那一句, 我做插件出来给大家使用, 不是给大家用来泄愤的, 我也没有强迫大家使用这个插件的意思, 所以希望大家明白做插件的辛苦,  我也不是才开始做插件, 怎么说做DISCUZ插件也有3年了. 接触PHP也有5年了...如果大家用了插件不满意的, 请立即卸载掉.

如果大家对这个插件有漏洞还不放心的, 大可自己把代码重新检测一遍, 看看是否还有漏洞, 这也是我放出源代码给大家的用意.

你相信这个插件, 觉得好你就继续使用, 如果你担心有问题, 自己又不会程序, 请慎重选择.

当然, 这个是免费的插件, 你也可以在上面进行二次开发, 但是请保留名字和版权, 我想如果你是一个程序员, 这个是程序员最基本的道德问题,  你会知道怎么做的.


我已经把我在discuz发布的黑道生涯的下载版本的连接全部转到这个帖子上面来了, 也就是目前下载地址只有这个帖子才是最新的, 其他帖子所提供的黑道生涯的修改的版本与我无关, 所以请大家自己去识别. 漏洞问题在这个帖子里面提供下载的已经得到修正, 如果你在其他帖子下载黑道3.0版, 我不敢保证是否还存在漏洞问题, 请大家注意.

同时, 如果大家下载使用3.0版本的过程中还遇到其他问题, 请回帖大家互相讨论一下.

最后, 感谢支持黑道生涯的站长们, 谢谢你们! 还有就是感谢那位朋友huihui0103对黑道插件的关心和给我提醒漏洞的所在, 如果我的言语有什么触犯你的地方, 请多多见谅.

黑道生涯的游戏说明和简介请看这里: https://discuz.dismall.com/viewthread.php?tid=1071843

评分

1

查看全部评分

 楼主| Ricky_Yahoo 发表于 2009-7-27 20:51:15 | 显示全部楼层

下载区

本帖最后由 Ricky_Yahoo 于 2009-7-31 19:44 编辑

更新说明

2009-7-27:

1. 修正了注入漏洞提权的问题, 过滤所有加入数据库查询的变量。

2009-8-1:

1. 加入了能在dz7.0下面正常显示的CSS代码, 使得6.1的版本也能在dz7.0下面运行

如果有有提示是免费版,请重新下载附件覆盖/plugins/blackband下的rob.inc.php和blackband.inc.php两个文件即可或者打开这两个文件找到 那段提示自己去掉即可.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

回复

使用道具 举报

 楼主| Ricky_Yahoo 发表于 2009-7-27 20:51:26 | 显示全部楼层
本帖最后由 Ricky_Yahoo 于 2009-7-27 23:51 编辑

这里留个位置说说黑道的注入漏洞问题


其实discuz已经做了引号的过滤,本来PHP是可以设置是否自动过滤引号的, 然后dz根据设置是否过滤一次,

  1. function daddslashes($string, $force = 0) {

  2.         !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());

  3.         if(!MAGIC_QUOTES_GPC || $force) {

  4.                 if(is_array($string)) {

  5.                         foreach($string as $key => $val) {

  6.                                 $string[$key] = daddslashes($val, $force);

  7.                         }

  8.                 } else {

  9.                         $string = addslashes($string);

  10.                 }

  11.         }

  12.         return $string;

  13. }
复制代码
例如:

  1. $sql = $db->query("SELECT * FROM cdb_members WHERE uid='$discuz_uid'
复制代码
因为$discuz_uid是内定的, 所以这个不用担心有注入的问题, 即使有人使用

http://www.yulegame.net/blackband.php&discuz_uid=0 or 1=1;select *......

都是没用的,因为blackband.php运行了一遍后从头开始运行就经过common.inc.php,实际上就重新再次改变了$discuz_uid的值了.所以$discuz_uid不担心注入问题, 除非你没有运行common.inc.php

黑道其他地方都数据库查询语句都经过了intval($band_id)等等的过滤, 或者有些根本上不需要过滤, 因为有些变量是直接读取数据库里面的字段的, 从数据库里面出来的例如id,只要是数字类型的都不担心变量输入问题。。


最需要担心的注入问题就是用户的输入那里,不管是$_POST还是$_GET提取的变量都要注意, 因为你根本上不知道用户会输入什么数据,所以就导致了注入漏洞的问题。

这个是很基本的问题了,不是不知道,只是有时候太多变量了大家已经顾不上或者忽略了,所以我现在做的插件都是用OOP来做的,包括现在推出的娱乐大富翁,在类函数里面已经把传递的参数过滤了一次再和数据库的语句打交道的,这样就方便省事多了,不必把程序都翻一次,

黑道3.0以前的版本其实有两个地方的注入漏洞,一个是yule.inc.php,另外一个是shop.inc.php,里面有一处地方传递$id变量,这个是没有经过过滤而直接传递给数据库查询语句的

  1. $query = $db->query("SELECT * FROM cdb_bb_yule WHERE id=$id");
复制代码
很明显, 上面的$id没有引号, 也没有过滤,所以导致了注入的问题, 如果上面的$id有引号括起来, 也不会有注入的漏洞,因为开头我也说了discuz已经作了过滤..

如果上面的语句不用 intval($id) 来过滤$id的变量把他强制变为整型,用单引号括起来会怎样?

  1. $query = $db->query("SELECT * FROM cdb_bb_yule WHERE id='$id'");
复制代码
其实这样也是可以的, 为什么呢?

你可以自己做实验, 你传递  http://www.yulegame.net/blackband.php?id=' or 1=1; update cdb_members SET password='' where uid='1

如果引号没有过滤,上面的语句则会变为:

SELECT * FROM cdb_bb_yule WHERE id='‘ OR 1=1; update cdb_members SET password='' where uid='1'

这样一个语句就变成了两个数据库查询语句了?是不是可以把uid=1的人的密码给清空了?

因为discuz已经过滤了引号,所以上面的语句会变为

SELECT * FROM cdb_bb_yule WHERE id='\‘ OR 1=1; update cdb_members SET password=\'\' where uid=\'1'

这样你传递到数据库里面,那肯定是没有返回记录了。

从这个注入漏洞的问题,我就抛砖引玉的给大家介绍注入的危险,把上面的update换成drop语句的话,数据库的资料也就完蛋了。。。

所以,还有一个数据库安全问题就是,使用特定的用户拥有特定的权限来做SELECT ,DELETE,INSERT,UPDATE操作,不要给他们更高级的权限。。。

以后有机会再说说吧。。。

在这里我就献丑了。。。
回复

使用道具 举报

huihui0103 发表于 2009-7-27 20:54:36 | 显示全部楼层
支持楼主一下
回复

使用道具 举报

漫游¢饿狼 发表于 2009-7-27 20:54:58 | 显示全部楼层
开源了?!
加油额!
支持你
回复

使用道具 举报

 楼主| Ricky_Yahoo 发表于 2009-7-27 20:59:02 | 显示全部楼层
把安装文件整理一下就放出,感谢huihui0103朋友的支持。谢谢您。
回复

使用道具 举报

framond 发表于 2009-7-27 21:05:04 | 显示全部楼层
支持楼主,加油,支持你
回复

使用道具 举报

tszho922 发表于 2009-7-27 21:58:46 | 显示全部楼层
沒7.0版???
回复

使用道具 举报

8783 发表于 2009-7-27 22:05:31 | 显示全部楼层
本帖最后由 8783 于 2009-7-27 23:38 编辑

點解我評唔到分- -

教師榕樹灣暢泳遇溺不治全日哀悼
回复

使用道具 举报

daniel_l 发表于 2009-7-27 22:12:09 | 显示全部楼层
没7.0版?????????
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 10:32 , Processed in 0.048831 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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