首页 > 其他分享 >菜鸟笔记之pwn工具篇--Pwndbg基础使用

菜鸟笔记之pwn工具篇--Pwndbg基础使用

时间:2024-10-03 12:11:11浏览次数:1  
标签:Pwndbg 查看 -- 菜鸟 断点 gdb pwndbg my 函数

什么是pwndbg?

它是gdb的一个插件,增加了许多功能,来帮助pwn手可以快速寻找到所需要的信息,除了pwndbg之外还有pedagef等工具可以用来协助进行调试。

如何给pwndbg分屏?

vim ~/.gdbinit
set context-output /dev/pts/2 # 这里修改成2,那么就会在第二个终端显示信息

pwndbg的基础操作:

启动调试:

gdb ./文件名
比如:gdb ./pwn

如果我们已经成功安装了pwndbg,那么打开gdb之后会显示pwndbg>
这样的提示符号,否则是gdb>

基础操作:

**************************************************
pwndbg> start 
# 开始运行,会停留在start函数上(start函数是main函数之前的一个函数) 
**************************************************
pwndbg> q 
# 退出调试
**************************************************
pwndbg> r 
# 从头运行程序直到遇到断点,没有断点则会一直运行到结束
**************************************************
pwndbg> c 
# 继续执行程序直到遇到断点,没有断点则会一直运行到结束
**************************************************
pwndbg> n 
# 单步步过,n不会进入一个小函数
**************************************************
pwndbg> ni 
# 常用,同n,但是是汇编层面的一步
**************************************************
pwndbg> s 
# 步入,比如遇到一个call 什么什么函数,s会进入看看怎么个事 
**************************************************
pwndbg> si 
# 常用,同s,但是是汇编层面的一步
**************************************************
pwndbg> fini 
# 快速运行结束当前函数
**************************************************
pwndbg> context 
# 重新打印页面信息
**************************************************
pwndbg> b function_name
# 比如: b read 在read函数上下断点,运行到read函数的时候就会停止
**************************************************
pwndbg> b *(&function_name+offset)
# 比如: b *(&read + 10) 在read函数+10的地址上下断点,运行到这个地址的时候就会停止
**************************************************
pwndbg> b *0xaddr
# 比如: b *0x408010 那么程序运行到0x408010这个地址的时候就会停止
**************************************************
pwndbg> i b
# 查看断点信息,哪些地方打了断点
**************************************************
pwndbg> delete <断点序号>
# 删除断点序号对应的断点,单独一个delete会删除所有断点
**************************************************
pwndbg> i r
# 查看所有寄存器中存储的数据
**************************************************
pwndbg> i r <registers>
# 查看具体某一个寄存器的值 比如: pwndbg> i r rax
**************************************************
pwndbg> stack <int>
# 查看栈中的信息,具体数量填在stack后面,比如: stack 50
**************************************************
pwndbg> search <string>
# 在程序中查看字符串,可以查看自己输入的信息被存在什么地方了
**************************************************
pwndbg> set $<rigister> = <int>
# 使用set来给寄存器设置自定义的值
**************************************************
pwndbg> bt
# 查看我们当前这个函数的上一个函数是什么
**************************************************
pwndbg> vmmap
# 查看程序各个段的位置以及权限等信息
**************************************************
pwndbg> elf
# 查看elf文件信息
**************************************************
pwndbg> bins
# 查看释放的堆块
**************************************************
pwndbg> heap
# 查看正在使用的堆块
**************************************************

x命令和p命令的使用:

1. x 命令

x 命令用于查看内存中的数据。它可以显示指定地址或变量所占内存的内容。其基本语法如下:

x/[n][f][u] addr
参数说明:
  • n:可选,表示要显示的单元数量,默认为1。
  • f:可选,表示显示的格式,常见格式包括:
    • d:十进制整数
    • x:十六进制
    • o:八进制
    • c:字符
    • f:浮点数
  • u:可选,表示数据单位,常见单位包括:
    • b:字节
    • h:半字(2 字节)
    • w:字(4 字节)
    • g:巨字(8 字节)
示例:
  1. 查看内存地址的内容
x/10x 0x7fffffffe000

以上命令将以十六进制格式显示从 0x7fffffffe000 开始的10个字节的内容。

  1. 查看变量的内容
x/4d my_array

该命令将以十进制格式查看 my_array 数组的前4个元素。

2. p 命令

p 命令用于打印变量的值,通常用于查看变量的当前状态。其基本语法如下:

p [expression]
参数说明:
  • expression:要打印的变量名或表达式。
示例:
  1. 打印简单变量
p my_variable

该命令将输出 my_variable 的当前值。

  1. 打印结构体成员
p my_struct.member

此命令将输出结构体 my_structmember 的值。

  1. 打印表达式的值
p my_variable + 10

该命令将输出 my_variable 的值加上10的结果

#### 3. 常见用法示例

3.1 打印变量地址

使用 & 操作符可以打印变量的地址:

p &my_variable

3.2 观察数组

结合 px 命令,可以更好地观察数组内容:

x/10d my_array p my_array[0]

3.3 打印指针指向的值

如果打印指针指向的内容,可以使用 *

p *my_pointer

gdb 中是可以设置地址随机化开关,需要的时候可以关闭,来帮助我们调试

pwndbg> set disable-randomization on	# 开
pwndbg> set disable-randomization off	# 关
pwndbg> show disable-randomization		# 查

参考文献:
gdb调试入门指北 - ve1kcon - 博客园 (cnblogs.com)
pwn技术分享——pwndbg分屏显示设置_哔哩哔哩_bilibili

标签:Pwndbg,查看,--,菜鸟,断点,gdb,pwndbg,my,函数
From: https://www.cnblogs.com/XiDP0/p/18445567

相关文章

  • 深度学习(模型参数直方图)
        模型参数直方图可以展示模型参数在训练过程中的分布情况。通过直方图,可以了解模型的学习状态,识别过拟合或欠拟合问题,从而进行模型调优。下面以ResNet18为例,显示了不同层的参数直方图。importtorchvisionfrommatplotlibimportpyplotaspltimporttorchmod......
  • 智慧工地火焰烟火识别检测系统
    智慧工地火焰烟火识别检测系统通过AI视频分析技术,智慧工地火焰烟火识别检测系统实现对现场画面中火焰烟雾进行7*24小时不间断识别,对现场烟火从小烟到浓烟的转换实时分析自动报警。智慧工地火焰烟火识别检测系统对视频监控区域的画面的烟雾及时准确识别,并将烟火报警信息推送给后台......
  • 煤矿电子封条视频监控系统
    煤矿电子封条视频监控系统基于视频AI智能分析技术,煤矿电子封条视频监控系统利用现场已有的摄像头,代替人眼对现场皮带撕裂、跑偏、皮带异物、堆煤等设备异常状态实时监控分析自动识别预警,并同步回传给后台提醒值班人员及时处理,避免发生更大的损失意外情况。煤矿电子封条视频监控系......
  • 【VMware VCF】更新 SDDC Manager 中的 vSAN HCL 数据库。
    VMwareCloudFoundation解决方案中,SDDCManager内的vSANHCL数据库具有有效期,如果vSANHCL数据库在60天内未更新,则会出现警告;如果vSANHCL数据库在90天内未更新,则会出现严重错误。如下图所示,当前SDDCManager中的vSANHCL数据库已超过60天未更新并出现了警告提......
  • Java内存区域与分配策略
    1.运行时数据区Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,创建和以及销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动结束而建立和销毁。1.1程序计数器(线程私有)程序计数器(Pro......
  • 行为识别预警系统
    行为识别预警系统通过现场已有的摄像头,行为识别预警系统采集现场画面中人的行为进行智能分析,发现违规行为自动抓拍告警,同步回传后台存档提醒值班人员及时处理。行为识别预警系统通过AI视频智能分析技术,助力生产制造领域的智能化升级,避免人员及财产的损失、真正实现安全生产。行......
  • 生产区域人数超员监控报警系统
    生产区域人数超员监控报警系统通过AI视频分析技术,生产区域人数超员监控报警系统对现场监控画面种生产作业区域进行7*24小时不间断自动实时监测,无需人工干预生产区域人数超员监控报警系统一旦识别到现场画面种作业区域超员时,立即告知监控管理中心进行告警,提醒后台值班人员及时处理......
  • 工装识别工装检测系统
    工装识别工装检测系统通过AI视频智能分析技术,工装识别工装检测系统对现场施工作业人员工装是否穿戴的进行实时分析,工装识别工装检测系统发现现场画面中工作人员未按要求着装,系统会自动抓拍发出警报并讲违规图片视频保存下来,同步回传后台提醒监理人员及时处理。按照规定要求着装穿......
  • 矿山电子封条智能监管系统
    矿山电子封条智能监管系统通过YOLOv7网络模型技术,矿山电子封条智能监管系统在通过在煤矿关键地点已经安装的摄像机,对矿井人数变化、生产作业状态、出入井人员等情况实时监测分析,发现煤矿人员作业及状态异常动态及时告警,自动将报警信息推送给后台系统,对矿山场景下人员施工作业实现......
  • 薄膜凸起和开裂是同一种应力导致的吗?
     知识星球里的学员问:我们产线上薄膜出了质量问题,都一概归结为应力过大。麻烦讲讲应力的种类,以及不同种类的应力会造成哪些薄膜问题?内应力的种类?内应力的分类很多,如果我们按作用的效果来分,可以分为压应力(CompressiveStress)与张应力(TensileStress)。如上图,压应力是膜层受到衬底的压......