• 注册
  • 物品&功能 物品&功能 关注:6460 内容:1017
    40金币

    【服务器攻防】七日杀服务器漏洞分享-01【异常工作台导致服务器宕机漏洞】

  • 查看作者
  • 打赏作者
  • 当前位置: 七日杀中文网 > MOD下载 > 物品&功能 > 正文
  • 物品&功能
  • 原创

  •         这几天,【衿】给我反馈了一个很神奇的问题,七日杀的服务器在某些情况下会莫名其妙的神奇的卡死,并且重启服务器也没用,只要有人到某个区域内,就会直接卡死。

            在得到存档文件后,【衿】告诉我,他尝试过对其进行性能分析,最终定位到七日杀的工作台队列这个函数,每次服务器卡死,都是这个函数在无限循环导致程序崩溃。

            于是在一起进行了一些可能性分析后,总结出了这个漏洞的原理。

       【衿的主页链接(他还有很多好玩的DLL哦)】


            具体工作原理如下:

            因为七日杀的服务器,在工作台制作物品的时候,并不会校验用户上传的制作队列,无论是制作时间还是制作物品。并且七日杀服务器也不校验物品放置这个功能,只是一味的接受客户端提交的物块更改。

            所以攻击者可以采用如下方式,攻击你的服务器=>在某个区域的地下,提交放置工作台,然后对此工作台提交一个伪造的不合法制作队列。这个制作队列中,制作时间是非法的输入,并且制作数量也是非法的。

            七日杀服务器的工作台制作函数,是一个死循环,所以这种非法的队列,会导致工作台直接在死循环中,直接卡死七日杀主线程导致闪退。

            如此一来,当有玩家尝试进入这个工作台的区域,激活此工作台,那么服务器会瞬间宕机闪退,即便你重新开服,甚至都无法手动清理该区域,因为你还没接近这个区域,一但服务器开始加载,那么就会崩溃。

            

            弄懂了崩溃原理,我们再去分析七日杀源码为何会崩溃。

            这其实有两方面的因素,具体为:1、七日杀不对上传的制作队列做校验。2、七日杀即便发现了错误的制作请求,也不从任务队列中删除它,而是尝试重复加载。

            说起来,1号问题还是比较常见的,大部分服务器漏洞都来源于七日杀本身根本不对客户端数据做校验,这个可以说是七日杀的一大特色,本地的权限非常大。但是2号问题就有些令人不可思议了,很难想象一个智商健全的开发者,在明明发现一个错误制作的请求的情况下,竟然不丢弃该请求反而尝试在一个死循环中重复加载?


            修复起来也比较简单,首先,我们在TileEntityWorkstation_HandleRecipeQueue这个函数中,添加对制作物品的各种必要属性的校验,使其不会产生制作了1s钟,制作时间减少了-1s钟这种很简单的逻辑错误问题。

            其次,我们在TileEntityWorkstation_cycleRecipeQueue中,将整个RecipeQueue重写,这个cycleRecipeQueue实际上是一个制作队列刷新的实现,原版的实现有很多的漏洞,这里我们直接弃用原版的写法,重构其制作队列的刷新机制,使得当遇到不合法的制作请求的时候,直接抛弃,而不是重复的对不合法的请求重复执行。

            

            经过这样的修改后,我们的工作台队列就变得更加合理了。他绝不会因为非法队列而卡死,只要有队列上来,就一定能够成功结束。

            附件内容中,我将附上修复此漏洞的C#源码,以及制作好的,未加壳的开源DLL,供大家学习参考。

    隐藏内容需要付费才可以看见

    马上购买

    "点赞是美意,打赏是鼓励"

    1人打赏

    这个逼装的我给82分,剩下的用666的方式打给你!

    回复
    Lv.6

    必须支持楼主!

    回复
    Lv.8
    闪耀星神

    这个逼装的我给82分,剩下的用666的方式打给你!

    回复
    Lv.7
    VIP·MAX
    甜心宝贝
    好东西 支持了 [s-26]

    接MOD定制开服架设/仙城传说②玩家群:259993999

    回复
    Lv.7
    VIP·MAX
    甜心宝贝
    赠送了礼物[亲吻]

    接MOD定制开服架设/仙城传说②玩家群:259993999

    回复
    Lv.7
    萌新驾到

    这个逼装的我给82分,剩下的用666的方式打给你!感谢大佬的付出,赞一个!

    q群 550180643

    回复
    Lv.7
    萌新驾到

    感谢大佬分享,之前就是这个问题一直被炸服务器,只能重置地图,没有任何办法

    群:1050040662 定制/开服/地图制作/价格公道

    回复
    Lv.8

    很难想象一个智商健全的开发者,在明明发现一个错误制作的请求的情况下,竟然不丢弃该请求反而尝试在一个死循环中重复加载”太TM贴切了,所有的爆红卡死都是这样的

    定制+Q417983415

    回复

    这个逼装的我给82分,剩下的用666的方式打给你!

    回复

    这个逼装的我给82分,剩下的用666的方式打给你!

    回复

    MOD板块严查恶意、辱骂、讽刺等评论,如发现此类评论轻则小黑屋,重则永久封禁!

    如果发现帖子违规,用户可以点击帖子标题旁的向下箭头,选择举报内容

    涉及版权纠纷请确保你有所属版权,否则中文网有权不作处理

    请登录之后再进行评论

    登录
    • 大版主
    • 小版主
  • 英雄大人
    英雄大人
    白天在工作,晚上在睡觉,有事可以留言,不一定能及时回复!
  • yichen
  • 林小天
    林小天
    我还活着买断制版本,私聊我qq3807190901请标明来意
  • 雾凇
    雾凇
    旧日支配者-光暗扩展 MOD作者
  • 摸鱼摸鱼摸
    摸鱼摸鱼摸
    交流吹水群967780922
  • 银河
    银河
    CSOL大灾变欢迎你的到来。QQ群:967780922
  • 安安
    安安
    大背包、常显、叠加、除草树,唯一作者QQ383125283
  • 最强打野贝爷
    最强打野贝爷
    上班!上班!上班!
  • Cure_805
    Cure_805
    晚上在睡觉,白天在工作,不一定能及时回复,有事可以留言!
  • happy!
    happy!
    住院中
  • 妮可Neko
    妮可Neko
    无聊写些小玩意儿
  • 赞助广告位

  • 点击展示图片即可一键加入QQ群
    赞助广告:100R/月 目前空缺广告位:0

    分享网站

  • 繁体中文
  • 任务
  • 动态
  • 到底部
  • 帖子间隔 侧栏位置: