1.绝对路径拼接漏洞
os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。
然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径
import os
print("1:",os.path.join('aaaa','/bbbb','ccccc.txt'))
print("2:",os.path.join('/aaaa','/bbbb','/ccccc.txt'))
print("3:",os.path.join('aaaa','ddd','./bbb','ccccc.txt'))
从后往前看,会从第一个以”/”开头的参数开始拼接,之前的参数全部丢弃;
以上一种情况为先。在上一种情况确保情况下,若出现”./”开头的参数,会从”./”开头的参数的前面参数全部保留; 输出:
1: /bbbb\ccccc.txt
2: /ccccc.txt
3: aaaa\ddd\./bbb\ccccc.txt
更多【编程技术-WEB代码审计】相关视频教程:www.yxfzedu.com