快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题

报错内容如下:

复制代码
pwnlib.exception.PwnlibException: Could not find a terminal binary to use. Set context.terminal to your terminal.

原因在于 pwntools 无法在 Docker 容器默认的终端环境中启动 GDB 所需的"新终端窗口"

解决方法:在脚本头新增如下内容

python 复制代码
context(terminal=['tmux', 'split-window', '-h'])

配置 pwnlib 上下文,告诉它使用 tmux 来分割窗口显示 GDB

有三种写法:

配置写法 效果说明 适用场景
['tmux', 'split-window', '-h'] 水平分割 (Horizontal Split) :在您当前的终端窗口上下创建一个新的 GDB 窗格。这是最常用的方式,因为它能让您同时看到 exploit 脚本的输出和 GDB 状态。 最常用。 适合屏幕宽度足够,希望同时监控 GDB 和 Exploit 脚本 I/O 的情况。
['tmux', 'split-window', '-v'] 垂直分割 (Vertical Split) :在您当前的终端窗口左右创建一个新的 GDB 窗格。 适合屏幕高度足够,希望同时监控 GDB 和 Exploit 脚本 I/O 的情况。
['tmux', 'new-window'] 创建新窗口 (New Window) :在当前的 tmux 会话中创建一个新的窗口 来运行 GDB。您需要使用 tmux 快捷键(通常是 Ctrl+b 然后按数字)来切换 GDB 窗口和 Exploit 脚本窗口。 适合屏幕较小,或者您希望 GDB 界面完全独占整个屏幕的情况。

在此之前,确保环境安装好了 tmux

python 复制代码
sudo apt update
sudo apt install tmux

新增配置文件:

bash 复制代码
vim /root/.tmux.conf

插入内容:

bash 复制代码
set -g mouse on

目的是解决后续无法使用鼠标滚动 tmux 窗格内容的问题

之后启一个 tmux 会话

bash 复制代码
tmux

在这个里面执行脚本

窗口可以正常滑动内容

如果想要选中复制粘贴,可以按住 shift 键再进行选中

一般这个会默认配置,我们可以强行再设置一下:允许终端的默认选中/复制行为

这个选项在 tmux 3.2 及更高版本中默认是打开的,但手动设置更保险

bash 复制代码
vim /root/.tmux.conf

新增

bash 复制代码
set -g set-clipboard on

目的是阻止 tmux 接管鼠标左键拖动行为

相关推荐
逸模5 小时前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
sbjdhjd6 小时前
Redis 主从复制、哨兵高可用与 Cluster 集群部署实验手册
运维·前端·redis·云原生·开源·bootstrap·html
AOwhisky6 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
ggaofeng6 小时前
glusterfs如何在k8s中使用
云原生·容器·kubernetes·glusterfs
Phantom Void6 小时前
服务器处理客户端请求的设计方法
linux·运维·网络
倔强的石头1066 小时前
Fooocus开源神器+cpolarAI让绘画告别服务器依赖
运维·服务器·cpolar
wei_shuo7 小时前
服务器挂了等用户投诉才发现?我用Beszel搭了轻量监控系统,宕机第一时间通知我
运维·服务器
王码码20357 小时前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
暮云星影7 小时前
个人总结 搭建Docker监控
docker·容器·grafana·prometheus
ylscode7 小时前
Anthropic Claude Oceanus意外泄露:Mythos系列AI红队测试遭遇API代理滥用危机
网络·人工智能·安全·web安全·安全威胁分析