利用原理
主要链条:
1exit->__run_exit_handlers->__call_tls_dtors
源码:
123456789101112131415161718192021222324252627282930313233343536373839# define PTR_DEMANGLE(var) PTR_MANGLE (var)# define ...
云崽bot基础搭建过程记录
突发奇想想要搭建一个qqbot玩玩,经同学推荐,准备从最简单的yunzai框架入手。
安装
环境准备:Windows/Linux/MacOS/Android Node.js(>=v21), Redis, Git
redis安装
下载地址redis,密码:114514
解压后启动redis-server.exe这个文件。
将redis...
问题由来
在对于堆的_IO_FILE利用的学习过程中,我们通常需要伪造一个fake_IO_FILE,并且附带源码调试,以方便清除是否进入了目标函数,是否一些条件判断通过。但是有时候却在pwndbg加载时找不到对应的glibc的symbol
file文件,这就导致我们无法进行源码级别调试,而且看结构体只能自己一个一个字段带进去看,十分麻烦。所以这里介绍一下如何方便地进行带符号调试。
...
protobuf简介
Protocol
Buffers(通常简称为protobuf)是由Google开发的一种语言中立、平台中立的序列化结构数据的方法。它用于高效地存储和交换数据,特别适合用于网络通信和数据存储。protobuf的主要特点包括:
高效性:protobuf使用紧凑的二进制格式,比其他文本格式(如JSON或XML)更小、更快。
语言中立:支持多种编程语言,包括C++、...
适用版本
2.23——至今
利用条件
能控制_IO_FILE的vtable和_wide_data(一般使用largebin attack)
程序从main函数返回,或者执行exit函数
能泄露libc_base和heap_base
利用思路
劫持IO_FILE的vtable为_IO_wfile_jumps
控制_wide_data为可控的堆地址空间
控制...
solidity这个语言广泛运用与智能合约的编写,想要入门区块链就得先了解这个语言。该语言其实与c语言用法类似。在solidity语言中,标识执行账户是用地址实现的,比如我们MetaMask中创建的Account的地址或是某个合约的地址。
1.一些基本概念与工具站
1)账户
外部账户
外部账户是由人创建的,可以存储以太币,是由公钥和私钥控制的账户。每个外部账户拥有一对公私钥,这对密钥...
适用版本
glibc2.23 - 2.29
利用条件
能控制top chunk的size域
能获取heap_base,进而计算出top_chunk的地址
能自由控制堆分配尺寸大小
利用思路
将top
chunk的size改得很大,使后续能够分配很大的堆块,从而使topchunk指向目标地址。
精准计算top chunk的地址与target
addr-0x10之...
问题发展路径
一开始最基本的格式化字符串漏洞任意地址写,没有什么限制
进阶一点的是非栈上的格式化字符串漏洞利用,需要利用到栈上的指向程序名称的链条以及靠近内核区域的链条,但这种方法正常而言需要多次格式化字符串漏洞的执行利用,对目标地址改动越大需要利用到越多次。
最后是在读取内容非栈上的情况下,实现在一次格式化字符串漏洞的触发中直接进行对一个栈上地址的两个字节的修改,可以用于减少利用...
go pwn的特点
Golang 使用了自己的运行时和内存管理机制。Go
的堆栈是可扩展的(split-stack model),即每个 Goroutine
的堆栈大小可以动态扩展。这使得堆栈布局更加复杂,和固定大小的堆栈相比更难预测。
无标准栈帧,也就是不怎么依靠rbp作为栈帧指针(但实际那个位置有时还是维护rbp),通常通过rsp进行局部变量寻址。
Go 语言依赖垃圾回收器...
一、web与pwn的联系
在某些 Web
服务中,会通过调用二进制程序来处理特定请求,尤其是在涉及动态内容生成、脚本执行、数据处理等场景时。以下是一些常见的例子:
1. CGI (Common Gateway
Interface)
概述: CGI 是一种通用的接口标准,允许 Web
服务器调用外部的二进制程序或脚本来生成动态内容。
调用方式: 当用户请求特定路径时,Web ...