关于python中命令执行函数的返回值的研究

前言

事情的开始是在做一道ctf题目的时候发现会返回一个数字,比如0,512 …

分析了一下发现其实是python的os.system执行命令之后返回的状态码,于是我就想到能否利用这个返回值来带出数据呢,于是我进行了对各种命令执行函数的探索

各种命令执行函数

os.system

image-20251014193632120

可以看到在命令执行之后会返回一个数字0,0其实就是表示命令执行成功

如果失败会返回什么呢?我们来执行一个windows中没有的命令

image-20251014193742216

返回了1

对于为什么会返回这些值,我去查看了python的源码

image-20251014195108166

linux上面的的返回结果与windows有一点区别,但是如果是执行成功的话都是返回0

这些整数显然是命令执行的状态码,用来判断命令执行是否正常

由于返回值不可控,所以无法利用他来带出数据

os.popen

想要带出输出,不难想到使用popen函数,他的功能是执行命令并通过文件对象接口获取输出,配合上read()就能捕获到命令执行的结果

image-20251014195657210

显然这个是可以帮助我们带出数据的

subprocess.run

subprocess.run函数的返回值是一个对象

image-20251014202046958

参数列表中有一个参数是capture_output,默认值为False,不会捕获输出,当我们将其设置为true的时候,就能捕获到输出

image-20251014202027844

同样也可以用来带出数据

subprocess.getoutput

注意到subprocess中有一个函数

image-20251014202358814

这个函数的返回值就是执行命令的输出,完全符合我们的目的

image-20251014202515246

直接就可以带出数据

subprocess.getstatusoutput

返回命令执行的状态码和执行结果

image-20251014202727404

总结

暂时没有想到有什么利用场景,但是感觉探索的过程蛮有意思的,随便记录一下啦


关于python中命令执行函数的返回值的研究
http://example.com/2025/10/14/关于python中命令执行函数的返回值的研究/
作者
onehang
发布于
2025年10月14日
许可协议