利用原理

利用python的Site-specific configuration hook功能,这个功能原意是将特定路径加入模块搜索路径。它会在python初始化的时候导入。

注入方式

把pth文件注入到site-packages 里面

python是这样解析的

for n, line in enumerate(f):
    if line.startswith("#"):
        continue
    if line.strip() == "":
        continue
    try:
        if line.startswith(("import ", "import\\t")):
            exec(line)
            continue
        line = line.rstrip()
        dir, dircase = makepath(sitedir, line)
        if not dircase in known_paths and os.path.exists(dir):
            sys.path.append(dir)
            known_paths.add(dircase)

也就是当写入例如

/home/hkbin/anaconda3/lib/python3.7/site-packages 路径下,写入evil.pth

import os;os.system("cat /flag")

image.png