docker +tmux 远程本地gdb调试

文章目录

远程调试

但目前不知道如何实现可以边跟着脚本运行调试的方法

docker pull失败

https://wiki.bafangwy.com/doc/413/

docker上容器运行程序失败

https://blog.csdn.net/qq_46106285/article/details/124946919

宿主机远程调试docker中运行的程序

https://www.roderickchan.cn/zh-cn/2023-02-13-使用docker调试pwn题/#0x3-使用技巧

环境准备

  1. 容器中的准备

    • 安装gdbserver :首先,在Docker镜像中需要安装gdbserver。这通常通过在Dockerfile中添加相应的安装命令(如RUN apt-get update && apt-get install -y gdbserver对于基于Debian的镜像)来完成。
  2. 宿主机上的准备

    • 安装GDB:确保你的宿主机上安装了GDB,这是调试器的客户端部分,将用来远程操控容器中运行的程序。
    • 可执行文件或符号文件:宿主机上需要有与容器中待调试程序对应的可执行文件或调试符号文件。这是因为GDB在宿主机上运行时,需要这些信息来解析和展示调试信息。

调试步骤

  1. 启动容器并映射端口 : 选择roderick师傅的容器直接调试了
    https://hub.docker.com/r/roderickchan/debug_pwn_env/tags
bash 复制代码
docker run -it --rm -v host_path:container_path -p host_port:container_port --cap-add=SYS_PTRACE IMAGE_ID /bin/bash
  1. 在容器中启动gdbserver :进入容器后,使用gdbserver附加到你想调试的程序,并指定监听的端口。例如,如果你的程序名为my_program,命令如下:

    bash 复制代码
    gdbserver localhost:12345 my_program

    这会让gdbserver在容器中启动你的程序,并监听2345端口等待来自GDB的连接。

  2. 在宿主机上使用GDB连接 :打开宿主机上的终端,使用GDB连接到容器中的gdbserver。你需要指定宿主机上的可执行文件路径(即使实际运行在容器中)和目标远程地址及端口:

    bash 复制代码
    gdb -ex 'target remote 127.0.0.1:12345' /path/to/your_program

    /path/to/your_program应当是宿主机上与容器中相同的程序副本或符号文件,确保GDB能够识别并加载正确的调试信息。

  3. 开始调试:一旦连接成功,你就可以在宿主机的GDB中设置断点、单步执行、查看变量等,就像直接在本地调试程序一样。

本地调试

启动容器并映射端口 : 选择roderick师傅的容器直接调试了
https://hub.docker.com/r/roderickchan/debug_pwn_env/tags

bash 复制代码
docker run -it --rm -v host_path:container_path -p host_port:container_port --cap-add=SYS_PTRACE --privileged IMAGE_ID /bin/bash

数据卷挂载-v host_path:container_path使得在宿主机上对文件修改在docker也生效,然后在docker中调试运行,在宿主机修改这个文件夹或者文件

bug

Could not find a terminal binary to use. Set context.terminal to your terminal

然后在容器中执行./exp.py就行了

pwngdb+tmux

python 复制代码
# 绑定Ctrl+a为新的指令前缀
set -g prefix C-a

# 从tmux v1.6版起,支持设置第二个指令前缀, 设置一个不常用的`键作为指令前缀,按键更快
set-option -g prefix2 `

# 修改分屏快捷键
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录
unbind %
bind | splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录

# 设置面板大小调整快捷键
bind j resize-pane -D 5
bind k resize-pane -U 5
bind h resize-pane -L 5
bind l resize-pane -R 5

# 刷新配置文件
bind R run-shell "tmux source-file ~/.tmux.conf"

# 上一个窗口
bind a last-window

https://louiszhai.github.io/2017/09/30/tmux/

  • 先按下Ctrl+a并松开,再按下?,就会显示帮助信息。然后,按下 ESC 键或q键,就可以退出帮助
  • Ctrl+a :光标切换到其他窗格
  • Ctrl+a hjkl:调整当前所在窗格大小
  • Ctrl+a a::切换到上一个窗口
  • Ctrl+a | 水平方向增加窗格
  • Ctrl+a - 垂直方向增加窗格
  • 赋值:直接鼠标选择内容就行
  • 粘贴:Ctrl+a +]

pwngdb和tmux优化

https://bbs.kanxue.com/thread-276203.htm

感觉用了大佬的镜像后宿主机来做pwn题都不香了

相关推荐
ZeroNews内网穿透8 小时前
本地部署 Payara Server 公网访问
运维·服务器·网络协议·安全
Java陈序员8 小时前
运维必备!一款全平台可用的服务器管理利器!
linux·react.js·docker
HIT_Weston8 小时前
90、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(四)
linux·运维·ubuntu
回忆是昨天里的海8 小时前
dockerfile-镜像分层机制
linux·运维·服务器
2501_941982058 小时前
基于自动化协议的企微外部群消息调度与状态回执实现逻辑
运维·自动化·企业微信
双层吉士憨包8 小时前
如何安全访问 Kickass Torrents:代理选择、设置与最佳实践(2026)
运维·服务器
hanyi_qwe9 小时前
K8S网络和基本命令 【 K8S (二)】
网络·容器·kubernetes
JY.yuyu9 小时前
Windows Server服务器数据备份 / 活动目录(AD域)
运维·服务器
德育处主任9 小时前
『NAS』中午煮什么?Cook
前端·docker
三翼鸟数字化技术团队9 小时前
搭建自己的MCP服务器
运维·服务器·人工智能