这套代码不要用!,里面有一个致命的未授权 SQL 注入漏洞,任何人不用登录就能把你整个数据库拖出来,包括管理员的密码哈希。
1. 未授权 SQL 注入(致命)`faq.php?zyhome=chatroom&zyact=refresh&lastid=` 和`getnum` 里的`$lastid` 直接拼接进 SQL:
PHP
1`{eval $q2 = $db->query("SELECT * FROM zy_chatroom WHERE pid > " . $lastid ...);}`
DZ 的转义只防引号,挡不住数字型注入。攻击者构造`lastid=99999999 UNION ALL SELECT 0,uid,username,password,0 FROM cdb_members -- -` ,返回的行会被 当成聊天消息直接渲染在聊天框里 ——用户名、密码哈希、邮箱想看什么看什么,游客就能执行。
2. 服务端无登录校验 发帖接口`zyact=post` 只看前端 JS 隐藏了输入框,服务端没检查`$discuz_uid` ,游客直接 POST 就能灌水(uid=0"游客"身份)。
3. 无 formhash / CSRF 防护 ——别的网站挂个表单就能让你论坛的登录用户被迫发聊天内容。
4. 工程问题一堆 :建表没有`$tablepre` 前缀;不用 AUTO_INCREMENT 而是手动`$pid+1` (并发下主键冲突);消息无长度限制、无频率限制;`dgmdate()` 重复加时区偏移(时间显示快 8 小时)。
5. 作者标签确认 :`zy_chatroom` 表、`zyhome` 参数、`zhangyuchat` 变量、把全部选择器塞进数组再用`zhangyuchat[47]` 索引调用——这套数组索引写法唯一作用就是让代码不可读,方便藏东西。这次没发现外联域名和 cookie 外发,但上面的注入比外联后门更直接。
6. 切换模板卡死 :JS 强依赖 colors 模板独有的`$jq` (jQuery 别名)、`#header` 容器,以及 colors 的 faq 模板里才有`{subtemplate aa_zyhome_chatroom}` ;切模板后请求失败,而失败回调`zylt_firstload()` 零延迟无限重试 ,AJAX 风暴直接把页面和服务器一起拖死。
## 重要提醒
如果它曾经在你的论坛线上运行过,数据库等于对外敞开过 。建议:改一次管理员密码,检查后台有没有多出不认识的管理员/带权限账号。
这套代码一行都不值得留!!!
-
微信截图_20200409174813.png (86 KB)


新浪微博
QQ空间
人人网
腾讯微博
Facebook
Google+
Plurk
Twitter
Line
我壇的聊天室在遊客狀態為何表情會走出來呢?
把下边代码放入header模板的</head>下边就行了