WEB代码审计

1.绝对路径拼接漏洞

os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。

然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径

python 复制代码
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'))

从后往前看,会从第一个以"/"开头的参数开始拼接,之前的参数全部丢弃;

以上一种情况为先。在上一种情况确保情况下,若出现"./"开头的参数,会从"./"开头的参数的前面参数全部保留; 输出:

Kotlin 复制代码
1: /bbbb\ccccc.txt
2: /ccccc.txt
3: aaaa\ddd\./bbb\ccccc.txt
相关推荐
linux修理工3 分钟前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
傅里叶7 分钟前
sudo启动Flutter程序AMD初始化失败
linux·flutter
bug攻城狮8 分钟前
CentOS 7 出现 “Could not resolve host“ 错误的修复方案
linux·运维·centos
shellvon15 分钟前
前端攻防:揭秘 Chrome DevTools 与反调试的博弈
前端·逆向
β添砖java20 分钟前
案例二:登高千古第一绝句
前端·javascript·css
却尘20 分钟前
Server Actions 深度剖析:这就是个披着 React 外衣的 RPC
前端·rpc·next.js
feifeigo12324 分钟前
CentOS系统管理:useradd命令的全面解析
linux·运维·centos
TNTLWT26 分钟前
单例模式(C++)
javascript·c++·单例模式
こ进制掌控者27 分钟前
CentOS 8重启后网卡不见了解决办法
linux·运维·centos
Nightwish532 分钟前
Linux随记(二十三 )
linux·运维