docker +tmux 远程本地gdb调试

文章目录

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

远程调试

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

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-%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 +]

Tmux复制粘贴到其他地方

https://cn.linux-console.net/?p=15192
在这里插入图片描述

pwngdb和tmux优化

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/363148.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索Java开发世界:Redis~类型分析大揭秘

文章目录 深入探索Java开发世界:Redis~类型分析大揭秘一、数据结构类型二、分布式锁类型三、事物命令类型四、事物三大特性类型 深入探索Java开发世界:Redis~类型分析大揭秘 Redis数据库基础知识,类型知识点梳理~ 一、数据结构类型 Redis是一…

Redis集群部署合集

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一: 实验二: 实验三: 实验四: 添加节点 自动分配槽位 提升节点为master: 实验…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中,我们经常会遇到各种各样的事情,有时候可能会遗忘一些重要的事情。这个时候,一个简单好用的便签提醒工具就显得尤为重要了。那么,哪款桌面提醒工具比较好用呢?下面,就为大家推荐一款我…

【新版本来袭】ONLYOFFICE桌面编辑器8.1 —— 重塑办公效率与体验

文章目录 一、功能完善的PDF编辑器:重塑文档处理体验编辑文本插入和修改各种对象,如表格、形状、文本框、图像、艺术字、超链接、方程式等添加、旋转和删除页面添加文本注释和标注 二、幻灯片版式设计:创意展示的无限舞台三、改进从右至左显示…

侯捷C++面向对象高级编程(上)-2-构造函数

1.inline函数 2.访问级别 3.构造函数 4.重载

基于SpringBoot养老院管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

Docker期末复习

云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…

大数据学习-大数据介绍

意义 从海量的数据中分析出海量数据背后的价值 需要分析海量的数据,就需要存储、计算和分析 那就需要分布式多台计算机合适的工具来处理数据 工具 特点 大数据的核心工作:从海量的、高增长的、多类别的、信息密度低的数据中挖掘出高质量的结果 数据存储…

高性价比 ESP32 网络收音机:OLED 显示+编码器控制 (源码开源)

摘要: 本文将详细介绍如何使用 ESP32 开发板制作一个功能完备的网络收音机。我们将涵盖硬件选择、软件架构、网络连接、音频流解码、用户界面设计等方面,并提供完整的代码示例和详细的解释,帮助您轻松构建自己的网络收音机。 关键词: ESP32, 网络收音机…

复分析——第6章—— Γ 函数和 ζ 函数(E.M. Stein R. Shakarchi)

第6章 Γ函数和Ζ函数(The Gamma and Zeta Functions) 毫不夸张地说,Γ函数和Ζ函数是数学中最重要的非初等函数之一。Γ函数在自然界中无处不在。它出现在大量计算中,并以分析中出现的大量恒等式为特征。对此的部分解释可能在于Γ函数的基本结构特性&…

【ajax核心02】底层原理-Promise对象

目录 一:promise对象是什么 二:语法(Promise使用步骤) 三:Promise-三种状态 一:promise对象是什么 Promise 对象代表异步操作最终的完成(或失败)以及其结果值。 即Promise对象是…

工业边缘计算网关

1 介绍 HINETG系列边缘计算网关(Linux操作系统),是华辰智通的—款面向工业现场设备接入、数据采集、设备监控的工业级边缘计算网关。采用ARM Cortex-A7 800MHz高性能CPU,拥有以太网、串口、CAN口、IO口等丰富的接口,支持以太网、…

力压GPT-4o!新王Claude 3.5 Sonnet来了,直接免费可用

如今,大模型领域更卷了! 前脚 OpenAI 发布 GPT4o,硬控全场,后脚就被最大的竞争对手 Anthropic 超越了。 刚刚,Anthropic 发布了全新大模型 Claude 3.5 Sonnet,号称是迄今为止最智能的模型。 据介绍&#x…

大模型项目落地时,该如何估算模型所需GPU算力资源

近期公司有大模型项目落地。在前期沟通时,对于算力估算和采购方案许多小伙伴不太了解,在此对相关的算力估算和选择进行一些总结。 不喜欢过程的可以直接 跳到HF上提供的模型计算器 要估算大模型的所需的显卡算力,首先要了解大模型的参数基础知识。 大模型的规模、参数的理解…

为什么选择Xinstall CPA结算系统?因为它能帮您解决这些痛点!

在App推广和运营的道路上,我们时常面临着各种挑战和痛点。其中,结算系统的复杂性和不透明性往往成为制约我们发展的瓶颈。然而,有了Xinstall CPA结算系统,这些问题将迎刃而解,让您的App推广之路更加顺畅和高效。 一、…

前端开发的工厂设计模式

在前端开发中,工厂设计模式(Factory Pattern)是一种非常有用的设计模式,能够帮助我们在创建对象时减少代码的重复性和复杂性。 一、工厂设计模式概述 工厂设计模式是一种创建型设计模式,主要目的是定义一个用于创建对…

如何利用“AI交互数字人+展厅”拓展文娱消费空间?

打造新生代潮玩聚集地,打造演艺新空间,促进虚拟现实体验等文娱业态场景创新,成为了当下发展文旅消费新场景的一大重要手段。数字人汇集了虚拟现实、增强现实、全息投影、人工智能、实时传输语音合成等数字技术,可以利用数字人重构…

Python 语法基础一

1.变量 python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量…

大模型赋能全链路可观测性:运维效能的革新之旅

目录 全链路可观测工程与大模型结合---提升运维效能 可观测性(Observability)在IT系统中的应用及其重要性 统一建设可观测数据 统一建设可观测数据的策略与流程 全链路的构成和监控形态 云上的全链路可视方案 为什么一定是Copilot 大模型的Copilo…

vue+fineReport 使用前端搜索+报表显示数据

--fineReprot 将需要搜索的参数添加到模版参数 sql: --前端传递参数 注:因为每次点击搜索的结果需要不一样,还要传递一个时间戳的参数: let timesamp new Date().getTime()