You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby脚本相对路径读取依赖文件的异常现象咨询

关于Ruby脚本相对路径读取文件的问题解答

核心原因很直接:Ruby中使用相对路径读取文件时,基准是你执行脚本时的当前工作目录(CWD),而不是脚本本身所在的目录。

  • 你在/tmp目录下执行ruby /opt/update_dependencies.rb时,当前工作目录是/tmp,脚本里的相对路径dependencies.yml就会指向/tmp/dependencies.yml,自然会读取你在/tmp创建的文件。
  • 如果脚本想要固定读取自身所在目录的文件,需要用__dir__变量(Ruby 2.0及以上版本支持)来获取脚本的绝对路径,再拼接文件名,示例代码:
def list_from_file
  # __dir__ 返回当前脚本所在目录的绝对路径
  target_file = File.join(__dir__, "dependencies.yml")
  # 后续读取target_file即可
end

这种场景在CTF里属于典型的相对路径劫持漏洞,攻击者可以通过在可控目录构造恶意文件,让脚本执行时加载恶意内容,进而实现代码执行或权限提升。

内容的提问来源于stack exchange,提问作者xhi4m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:39:52