CTF-PWN-工具配置

pwngdb和pwngdb

github上下载pwndbg和pwngdb
最后设置主目录下的.gdbinit文件


source /home/llk/tools/pwndbg/gdbinit.py  #pwndbg/gdbinit.py位置而已
source ~/Pwngdb/pwngdb.py   source ~/Pwngdb/angelheap/gdbinit.pydefine hook-run
python
import angelheap
angelheap.init_angelheap()
end
end

pwngdb的一些相比pwndgb多的一些比较有用的指令

libc : Print the base address of libc
ld : Print the base address of ld
codebase : Print the base of code segment
heap : Print the base of heap
got : Print the Global Offset Table infomation
dyn : Print the Dynamic section infomation
findcall : Find some function call
bcall : Set the breakpoint at some function call
tls : Print the thread local storage address
at : Attach by process name
findsyscall : Find the syscall
fmtarg : Calculate the index of format string
You need to stop on printf which has vulnerability.
force : Calculate the nb in the house of force.
heapinfo : Print some infomation of heap
heapinfo (Address of arena)
default is the arena of current thread
If tcache is enable, it would show infomation of tcache entry
heapinfoall : Print some infomation of heap (all threads)
arenainfo : Print some infomation of all arena
chunkinfo: Print the infomation of chunk
chunkinfo (Address of victim)
chunkptr : Print the infomation of chunk
chunkptr (Address of user ptr)
mergeinfo : Print the infomation of merge
mergeinfo (Address of victim)
printfastbin : Print some infomation of fastbin
tracemalloc on : Trace the malloc and free and detect some error .
You need to run the process first than tracemalloc on, it will record all of the malloc and free.
You can set the DEBUG in pwngdb.py , than it will print all of the malloc and free infomation such as the screeshot.
parseheap : Parse heap layout
magic : Print useful variable and function in glibc
fp : show FILE structure
fp (Address of FILE)
fpchain: show linked list of FILE

pwncli库模式

可以调用一些库函数和类 如house_of_apple2_execmd_when_do_IO_operation()和IO_FILE_plus_struct类

在这里插入图片描述

keypatche

https://github.com/keystone-engine/keypatch
最终效果
在这里插入图片描述

pwninit

https://github.com/io12/pwninit

libc6_2.31-0ubuntu9.12_amd64.deb: 这个包是 glibc 的标准库包。它包含了使用 C 语言编写的程序在运行时需要用到的基本库文件。这些文件提供了程序运行中执行系统调用、处理数据、内存分配等标准操作需要的函数实现。此包中通常不包括库的源代码、符号表或调试信息,这是为了保持库文件的轻量化,使系统运行效率更高,并且减少对存储资源的需求。

libc6-dbg_2.31-0ubuntu9.12_amd64.deb: 这个包是 glibc 的调试包。它包含了与 libc6 包相同版本的库文件的调试信息和符号表。这些调试信息允许开发者在使用调试工具(例如 GDB)时查看更多关于程序是如何执行的信息,包括变量值、内存地址和栈追踪等。调试信息很重要,它可以帮助开发者在程序中发现和修复错误,尤其是在跟踪难以解决的内存泄漏和其他,复杂错误时。

glibc源代码到网上下载就行,其解压之后类似会得到下图这些东西
在这里插入图片描述

.dynsym 和 .symtab

.dynsym 和 .symtab 都是符号表,不过它们的用途各有不同:

.dynsym (动态符号表)

  • dynsym 是 ELF (Executable and Linkable Format) 文件格式的一部分,它包含了动态链接过程中需要用到的符号。它主要用于运行时动态链接(如共享库 .so 文件之间的链接),包括那些由动态链接器 (ld.so) 处理的符号。
    它通常包括那些需要被共享或者由其他模块(例如其他共享库或者执行文件)使用的全局符号。

.symtab (符号表)

  • .symtab 也是 ELF 文件格式的一部分,包含了链接时以及调试时可能用到全套符号信息,这包括了全局符号和局部符号。
    它通常在编译时带 -g 选项(在 gcc 中)生成,并在 GDB 或其他调试器中用于符号解析和源代码级调试。

在优化文件大小时,常常使用 strip 命令(或编译器选项)来移除 .symtab 区段和其他的调试信息,以减小生成的二进制文件的大小。这通常发生在为生产环境准备二进制文件的时候。而 .dynsym 保留,因为它对于动态链接是必需的。这意味着即使 .symtab 被移除,程序仍能正常运行,因为依赖于动态链接的符号仍由 .dynsym 提供。

heaptrace

https://github.com/Arinerron/heaptrace

一旦下断点进入pwngdb后就不会再回显堆相关的内容了,有点郁闷

  • heaptrace是一个堆调试器,用于跟踪ELF64 (x86_64)二进制文件中的glibc堆操作。它的目的是帮助在调试二进制文件或执行堆pwn时可视化堆操作。

  • 用易于理解的符号替换地址

  • 检测堆损坏和内存泄漏问题

  • 可以在GDB中随时调试(——break)

  • 支持所有ELF64 (x86_64)二进制文件,无论ASLR或编译器设置如何

  • 可以创建断点,以便在满足指定条件时自动用GNU调试器(gdb)替换跟踪程序。

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

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

相关文章

亲测:腾讯云8核16G服务器价格1668元一年送3个月,购买需谨慎

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…

MyBatis3源码深度解析(七)JDBC单连接事务

文章目录 前言2.7 JDBC单连接事务2.7.1 事务的开启与提交2.7.2 事务隔离级别2.7.2.1 并发访问问题(1)脏读(2)不可重复读(3)幻读 2.7.2.2 事务隔离级别(1)TRANSACTION_NONE&#xff1…

程序员常见的算法介绍

本文将为您详细讲解程序员常见的算法,以及它们的特点、区别和应用场景。算法是计算机科学的核心概念之一,它们是解决问题和执行任务的方法和步骤。在编程中,算法是实现特定功能的基础。 1. 排序算法 特点 - 用于将一组数据按照特定的…

活力up+

持续学习和接触新鲜事物能够有效激发大脑的神经可塑性,这一特性使得大脑能够在面对新信息、新挑战时灵活调整,构建新的神经连接,强化或弱化已有的神经通路,从而优化大脑的功能和结构。 1.神经可塑性 持续学习和不断接触新鲜事物对…

jupyter notebook 调整深色背景与单元格宽度与自动换行

# 安装jupyter主题 pip install jupyterthemes # 列举主题 jt -l # 设置主题 jt -t chesterish设置宽度 打开users 当前用户目录下的custom.css文件 写入.container { width:80% !important; } 即可 设置自动换行 查找创建这个目录以及文件notebook.json 写入配置 “li…

4 个最佳 Windows 文件恢复软件

如何从 Windows 硬盘恢复丢失的数据?您是否获得了最好的 Windows 文件恢复软件?在这里,我们测试并找到最好的 4 个 Windows文件恢复软件,让您轻松快速地从 Windows 硬盘驱动器或任何其他存储设备恢复丢失的数据。 4 个最佳 Windo…

ARM中多寄存内存访问概念和栈的种类和应用

多寄存器内存访问指令 多寄存器内存访问指令 MOV R1,#1 MOV R2,#2 MOV R3,#3 MOV R4,#4 MOV R11,#0x40000020 STM R11,{R1-R4} 将R1-R4寄存器中的数据存储到内存以R11为起始地址的内存中 LDM R11,{R6-R9} 将内存中以R11为起始地址的数据读取到R6-R9寄存器中 当寄存器…

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集,搭建tree_1和tree_2两个决策树模型,tree_1使用信息增益作为特征选择指标,B树使用基尼指数作为特征选择指标,各自对训练集进行训练,然后分别对训练集和测…

linux驱动——中断

1.Cortex-A系列的中断的简介 中断的基本概念:(interrupt) 中断本质上是系统内部的异常机制,当中断产生之后,他会停下当前正在执行的任务,转而去做其他的事情,在停下当前正在执行的任务之前,要先入栈(保护现场,其他的事情做完之后…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络(GAN)模型,包括编码器(Encoder)、解码器(Decoder)、生成器(ResnetGenerator)和判别器(Discriminator)。…

【vue.js】文档解读【day 4】 | 事件处理

如果阅读有疑问的话,欢迎评论或私信!! 文章目录 事件处理前言监听事件内联事件处理器方法事件处理器方法与内联事件判断在内联处理器中调用方法在内联事件处理器中访问事件参数修饰符事件修饰符按键修饰符常规按键别名系统按键别名组合按键ex…

Nomic Embed:能够复现的SOTA开源嵌入模型

Nomic-embed-text是2月份刚发布的,并且是一个完全开源的英文文本嵌入模型,上下文长度为8192。它在处理短文和长文本任务方面都超越了现有的模型,如OpenAI的Ada-002和text-embedding-3-small。该模型有137M个参数在现在可以算是非常小的模型了…