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

posted @ 2023-10-08 22:41  zpchcbd  阅读(133)  评论(0)    收藏  举报