快速在24.04Ubuntu搭建pwn环境
打了重庆市赛时,3个pwn题有2个给了2.39glibc,据有些大师傅们说,2.39的glibc只能在24.04的Ubuntu上兼容,我也试了试用glibc-all-in-one,下2.39的glibc,但是下下来是空的。这说明原先22.04Ubuntu的环境已经不够用了,需要新建一个24.04版本的Ubuntu虚拟机来应对各种可能的做题环境。这...
pwn-anote
32位程序,存在后门函数。
粗测一下功能,add没有我们可以控制的输入;edit可以往里写内容,并且最后会显示work
done;show能够看chunk里的内容,而且还送了gift,也就是堆上的地址。然后由于程序是c++编写的,直接看反编译的代码会比较模糊,这里结合动态调试分析功能点。
这里每次add时都会申请一个0x20大小的chunk,其中dat...
利用原理
主要链条:
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之...
问题发展路径
一开始最基本的格式化字符串漏洞任意地址写,没有什么限制
进阶一点的是非栈上的格式化字符串漏洞利用,需要利用到栈上的指向程序名称的链条以及靠近内核区域的链条,但这种方法正常而言需要多次格式化字符串漏洞的执行利用,对目标地址改动越大需要利用到越多次。
最后是在读取内容非栈上的情况下,实现在一次格式化字符串漏洞的触发中直接进行对一个栈上地址的两个字节的修改,可以用于减少利用...