You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CTF竞赛中无需pwntools/subprocess从Python启动bash会话的方法

解决Python中直接进入交互Shell的问题(CTF场景)

你的问题核心在于os.system每次调用都会启动独立的子Shell,第二个os.system("fg")所在的Shell和之前后台运行的bash不属于同一会话,因此无法恢复目标bash进程。下面是两种简便的实现方式:

方法一:用os.execve直接替换当前进程(推荐)

这种方式会把当前Python进程直接替换为bash,执行完前置操作后直接进入交互Shell,完全匹配你的需求:

import os

# 先完成所有需要的前置操作,比如打印内容、写入文件
print("hello world")

# 替换当前Python进程为bash,直接进入交互环境
os.execve("/bin/bash", ["/bin/bash"], os.environ)
  • execve会直接覆盖当前进程的内存空间,执行后Python进程消失,直接进入bash交互会话
  • 传入os.environ可让bash继承当前Python进程的环境变量,适配CTF场景下的权限、路径等环境需求

方法二:直接调用bash(无后台)

如果不需要先执行前置操作再进入Shell,直接用os.system("/bin/bash")即可,但这种方式会先进入bash,退出bash后才会执行后续代码:

import os

os.system("/bin/bash")
print("hello world")  # 该语句会在退出bash后才执行

内容的提问来源于stack exchange,提问作者spunkpike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:35:26