docker +tmux 远程本地gdb调试

ops/2024/9/24 15:17:01/

文章目录

  • 远程调试
  • docker pull失败
  • docker容器运行程序失败
  • 宿主机远程调试docker中运行的程序
      • 环境准备
      • 调试步骤
  • 本地调试
  • bug
  • pwngdb+tmux
  • pwngdb和tmux优化
  • ~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~

远程调试

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

docker_pull_3">docker pull失败

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

docker_6">docker容器运行程序失败

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

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

https://www.roderickchan.cn/zh-cn/2023-02-13-%E4%BD%BF%E7%94%A8docker%E8%B0%83%E8%AF%95pwn%E9%A2%98/#0x3-%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7

环境准备

  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
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,命令如下:

    gdbserver localhost:12345 my_program
    

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

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

    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

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

# 绑定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题都不香了


http://www.ppmy.cn/ops/52520.html

相关文章

kubernetes学习笔记(7)- 部署一个微服务

前言 上篇文章 使用 kind 快速搭建集群中提到使用 kind 搭建好集群。 接下来写一个简单的微服务来进行验证,并尝试配置服务类型为 LoadBalancer 。 编写一个最简单的服务调用 在上篇文章中,编写了一个 b-serv 服务,它包含一个简单的/hell…

宿州市各区县科技服务机构备案和绩效评价申报材料条件和申报时间解答

一、宿州市各区县科技服务机构备案工作 (一)申报条件 1.以研发设计、创业孵化、技术转移、科技金融、知识产权、科技咨询、检验检测认证、科学技术普及等为主营业务,在宿州市注册的独立法人机构,登记注册时间不少于一年&#xf…

qt 简单实验 画一个等边三角形

1.概要 2.代码 2.1 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr)…

Docker入门教程

安装Docker 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2.配置Docker的yum库 首…

C#写一个WebService服务器

首先在NuGet中下载Fleck动态库 创建一个WebSocketHelper类 public class WebSocketHelper {//客户端url以及其对应的Socket对象字典IDictionary<string, IWebSocketConnection> dic_Sockets new Dictionary<string, IWebSocketConnection>();//创建一个 websock…

零代码搭建AI应用-文心智能体的设计与实现

本教程旨在帮助你开发一个结合语音识别和信息查询技术的智能应用&#xff0c;为用户提供登山小技巧和心得体会&#xff0c;满足用户在户外运动中的需求。通过设计不同角色和场景&#xff0c;可以满足用户在不同生活领域的需求&#xff0c;例如在家庭、社交、职场等场景下提供不…

MATLAB基础应用精讲-【数模应用】协方差分析(附MATLABR语言和python代码实现)

目录 几个高频面试题目 通俗理解协方差、相关系数 方差 相关系数 ​编辑 ​编辑 算法原理 什么是协方差分析? 协方差分析的要求 协方差的性质 统计量计算 适用条件 SPSSAU 协变量 前提条件 案例应用 1 背景 2 操作 3 结果分析 其他说明 SPSS 代码实现 R…

解决element-plus没有导出的成员FormInstance

使用element-plus的el-form时&#xff0c;报错“"element-plus"”没有导出的成员“FormInstance”。你是否指的是“FooterInstance”? 解决方法&#xff1a; 引入ElForm类型&#xff0c;在外重新定义FormInstance的类型为ElForm的实例类型 示例&#xff1a; import…