安全RCE之未授权访问分析(24)

2023-05-02 来源:飞速影视
model方法位于uploads_actions.rb中,接下来调用strong_memoize传入语句块{ find_model },将判断实例变量@model是否定义。该方法位于lib/gitlab/utils/strong_memoize.rb中,代码如下:
module Gitlab module Utils module StrongMemoize def strong_memoize(name) if strong_memoized?(name) instance_variable_get(ivar(name)) else instance_variable_set(ivar(name), yield) end end def strong_memoized?(name) instance_variable_defined?(ivar(name)) end def ivar(name) "@#{name}" end
官方文档介绍中解释是用于简化对于实例变量的存取。

安全RCE之未授权访问分析


代码中@model为nil

安全RCE之未授权访问分析


所以会走到else中替换掉yield关键字为传入块中的find_model方法并执行来查找设置实例变量@model,该方法位于UploadsController中,

安全RCE之未授权访问分析


相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号