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的所有内容。


浙公网安备 33010602011771号