phplib 学习笔记
bbs_checkuserpasswd() 与 bbs_checkpasswd() 的区别在于 bbs_checkuserpasswd 不设置当前用户。
在未设定当前用户之前 调用 bbs_getuser() 会出段错误,进程直接被杀掉,原因在于 bbs_getuser 在 assign_user时检查 currentuser的权限以确定是否输出 lasthost,而此时 currentuser 为空,dereference 为NULL的指针当然会出错误。
===============================
找到一个土方法,为了防止 调用 bbs_* 函数时出错,可以这么做: bbs_checkpasswd(\”guest\”.\”密码\”)
找遍整个phplib ,没有直接设置 currentuser 的函数,仔细想一下是合情合理的,如果能直接 setcurrentuser
,用户密码验证这一关将形同虚设,万一被植入php木马,攻击者可以编写代码(当然攻击要十分了解BBS的结构才行) setcurrent 成任何用户(包括 SYSOP)..越来越感觉 smth 设计的巧妙了,这样即使攻击者能取得web界面代码的所有控制权,除了有与 guest 用户同等权限之外,对 BBS的系统无法作任何超乎权限的操作, 当然他可以用自己的ID编写灌水脚本,或者写脚本记录SYSOP输入的密码(但通常站务以上人员都是telnet 登录的),但这样的设计使
受攻击所受损失降到最低点,最起码排除数据被删除或cuang改的可能性,使web服务的不安性降低了一层.
==============================