MIPS汇编基础
MIPS汇编基础在复现DIR-815的时候,发现ida的汇编指令看不懂,环境搭建这里就直接借鉴别的师傅的了, 环境搭建参考这位师傅的mips pwn 快速上手实践指南-先知社区 MIPS 架构的简单介绍1.什么是架构?架构 = CPU 能听懂的一套专属语言规则,不同的设备之间语言不互通!电脑 CPU 原生听不懂 MIPS 写的程序,直接运行会报错。 举个例子: Intel/AMD 电脑 CPU 讲 x86 语言 手机 CPU 讲 ARM 语言 老路由器摄像头 CPU 讲 MIPS 语言 2.MIPS是什么?MIPS (Microprocessor without Interlocked Pipeline Stages) 是一种精简指令集计算机(RISC)架构 主要特点:精简指令集: 指令数量相对较少,每条指令功能单一 固定指令长度: 所有指令都是32位(4字节)长度 【划重点】 流水线设计: 支持高效的指令流水线执行 寄存器丰富: 拥有32个通用寄存器 加载/存储架构: 只有load/store指令能访问内存 【划重点】 延迟槽...
AWDP-PWN 赛前速成
awdp-pwn赛前速成小记没打过AWDP,因为第一次打线下赛,所以准备写个笔记记录一下,完事之后在准备在补点笔记。 Web我还没有学,只记录了pwn AWDP一般分为两个板块,Break(自己的payload打通)和Fix(让主办方的payload打不通) patch:指防御。 checker:指在部署题目的时候,检查选手提交的补丁(patch文件)是否符合预设条件的专门脚本。常见的非常规防御的例子就是把二进制文件直接删除、把关键漏洞语句直接删除、在堆利用的题目中将free语句直接删除等,checker就是用于检查选手是否存在这些非常规补丁的。它主要是通过和提交的二进制文件通信来判断这个二进制文件是否有异常。 打补丁有下面2个基本原则: 1.不改变程序的正常运行流程。 2.能够防御想要防御的攻击 漏洞加固技巧在AWDP中每个选手会收到一个附件,类似两个ctf题,只是一个修一个打,不同队伍不互通,有的赛制修是累加得分,有的就是固定分数,根据不同的赛制来得分,但本质上还是ctf赛题 patch-PWN使用:patch就是通过修改漏洞程序的漏洞汇编代码从而防止其他选手进行漏洞利用,不...
在2.27版本中尝试进行堆的简单攻击
在2.27版本中尝试进行堆的简单攻击tcache bin 基础 tcache机制是glibc 2.26之后引入的一种技术,它提高了堆管理器的性能,但是舍弃了很多的安全检查,所以有多种利用方式,现在的题目一般都基于更新版本的libc,tcache肯定是必不可少的一环,而且是最开始的那一环。 1.每个线程默认使用64个单链表结构的bins,每个bins最多存放7个chunk,64位机器16字节递增,从0x20到0x410,也就是说位于以上大小的chunk释放后都会先行存入到tcache bin中。 2.对于每个tcache bin单链表,它和fast bin一样都是先进后出,而且prev_inuse标记位都不会被清除,所以tcache bin中的chunk不会被合并,即使和Top chunk相邻。 tcache机制出现后,每次产生堆都会先产生一个0x250大小的堆块,该堆块位于堆的开头,用于记录64个bins的地址(这些地址指向用户数据部分)以及每个bins中chunk数量。在这个0x250大小的堆块中,前0x40个字节用于记录每个bins中chunk数量,每个字节对应一条tc...
堆初学
堆初学前言前面的两个学期都没有咋认真学,但是在暑假集训中,每天只需要学一件事,就是学习pwn知识,今天是7-15,前面我花了十天左右的时间学习了格式化字符串。但是也没有完全学会,只掌握了那几种方法。非栈上的还是没有掌握完全。先就这样吧,该开堆了,不开堆跟不上进度了。初步学习堆感觉堆的世界很大,有很多的新知识去学。 堆更多的是对指针的利用,不同于栈的思路。 本篇笔记记录堆原理,和堆的相关数据结构,以及ptmalloc2工具 堆概述 - CTF Wiki 堆相关知识 堆概述 什么是堆?在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。我们一般称管理堆的那部分程序为堆管理器。 引用自《堆概述 - CTF Wiki》 先看堆在虚拟内存中的位置 堆的生长方向是从低地址向高地址生长的,而栈是从高地址向低地址生长的。 **/我对这里有问题/** 我通过查资料,着重看一下这个heap和stack的内存分布 stack从高地址向低地址扩展,这样栈空间的起始位置就能确定下来。动态的调整栈空间大小也...
