python os.path.join特性
前言:看到phith0n师傅的文章讲述的python os.path.join可能出现的问题,这边简单的记录下
参考文章:https://wx.zsxq.com/dweb2/index/topic_detail/455524148448
os.path.join特性
test2.py
# coding=utf-8 import os import sys BASE_DIR = '/Users/lingchi' path = sys.argv[1] if path.find('./') >= 0 or path.find('..') >= 0: raise ValidationError('...') path = os.path.join(BASE_DIR, 'static', path) with open(path, 'rb') as f: print(f.read())
当我们能控制path这个位置的时候,就可以造成任意文件读取漏洞,如下图所示
os.path.join特性分析
这边可以看python的源码,位置在python3.10/posixpath.py中可以看到join函数的实现代码
在join的时候,是可以用绝对路径的,如果使用绝对路径,将忽略这个路径之前已经Join的所有内容。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY