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 ...
一、利用目的
在二进制程序调用iconv这个glibc函数时,或是在PHP从一个字符集转换到另一个字符集调用iconv这个API时,其中当编码转换为ISO-2022-CN-EXT时,iconv有可能会产生缓冲区溢出
二、利用方式
以从UTF-8转义到ISO-2022-CN-EXT为例。要触发此漏洞,我们需要迫使iconv()在输出缓冲区结束前发出一个转义序列。为此,我们可以使用诸如“劄...
一、mips架构概述
1.寄存器
寄存器
别名
用途
$0
$zero
常量0
$1
$at
保留给汇编器(Assembler
Temporary)。在汇编过程中用于一些临时计算,程序员不应直接使用。
$2-$3
\(v0-\)v1
用于存储函数的返回值。
$4-$7
\(a0-\)a3
...
引入
在栈溢出漏洞中,程序没有控制或错误控制输入的大小导致了该漏洞的产生。那我们很自然会想到能不能用try
throw
catch的异常机制来捕获栈溢出行为,从而能更直观的获取错误信息,也在一定程度上避免了一些奇怪的错误产生。但在c++的异常处理实现中,如果我们放任输入数据超过缓冲区大小,冀以异常机制来捕获栈溢出,结果将不尽如人意,甚至还会导致canary保护机制的绕过。
原理&am...