Pur3uit

The quieter you become, the more you are able to hear!


  • 首页

  • 标签

  • 分类

  • 归档

强网杯pwn-opm-write-up

发表于 2018-11-11 | 分类于 ctf

题目来源

2018强网杯线上赛-pwn,下载。

漏洞类型

gets()函数导致栈溢出,覆盖指向堆块的指针,可以实现任意地址读和任意地址写。

阅读全文 »

强网杯pwn-note2利用分析

发表于 2018-08-04 | 分类于 ctf

逆向分析

和上篇文章对note的分析差不多,漏洞点都是一样的,在对title进行修改的时候,导致off-by-one漏洞,只不过note2在对content进行修改的时候,对输入的size大小做了限制,只允许64-256字节的size。
这就导致了不能通过申请大的堆块来触发malloc_consolidate操作。

阅读全文 »

fastbin的off-by-one利用技巧

发表于 2018-07-27 | 分类于 ctf

背景知识

这个题目同样是2018强网杯线上赛的pwn题—-note,题目可以在这里下载。
这里涉及到两个知识点:

1:malloc_consolidate对fastbin的合并。
2:在程序开启RELRO技术之后,不能对GOT表进行改写的情况下,利用覆盖__realloc_hook来实现控制流劫持。

realloc函数的处理流程

对于realloc函数,我以往的认识大概就是具有对指定地址堆块的重新分配功能。如果新申请的内存大小小于或者等于原先的内存,那么就会返回原先的堆块指针;如果新申请的内存堆块大小大于原先的内存,那么就会新开辟一块内存返回给调用者,并将原先内存的内容拷贝到新申请的内存空间中。
但是,对于realloc是以怎样的步骤来申请新的内存的却不是很清楚。

阅读全文 »

运行不同glibc版本的文件

发表于 2018-06-26 | 分类于 notes

在实际运行程序时,经常会遇到一个问题,电脑上安装的glibc版本不符合要求,由于glibc是最底层的库,不可能重新编译glibc,这样会导致系统崩溃。
所以,怎么解决这个问题就很有必要了。

阅读全文 »

afl-qemu安装错误

发表于 2018-06-26 | 分类于 notes

afl是一款非常强大的fuzz工具,关于它的介绍和使用,网上有很多文章。
这里记录一下我在安装afl之后,使用qemu模式时遇到的一点问题,afl-qemu可以在没有源码的情况下对程序进行fuzz。

阅读全文 »

强网杯silent以及double free

发表于 2018-06-25 | 分类于 ctf

这个题目是2018强网杯线上赛的题目,题目在这里可以下载。可以使用两种方法来解决,一个是small bin的double free,一个是fast bin的double free。顺便总结一下这两个double free。

unlink操作

在前一篇文章里基本介绍了glibc的堆内存管理,但是没有深入分析chunk的释放过程,这里涉及到一个unlink宏,下面将详细说下当free一个chunk的时候,glibc具体进行了那些操作。

1:检查前一个chunk是否是free状态,这里根据被free chunk的size字段的P位进行判断,如果是free状态,则使用unlink宏将前一个free chunk从其对应的bin中取出来,和当前被free的chunk进行合并操作。
2:检查后一个chunk是否是free状态,这里根据后一个chunk的后一个chunk的size字段的P位进行判断,对于如何定位到next-next chunk,可以在当前chunk的地址上加上chunk的size进行定位。如果后一个chunk为free,则使用unlink操作,将其从对应bin中取出来,并与前面合并后的chunk进行合并操作。

阅读全文 »

Glibc-堆管理学习笔记

发表于 2018-06-23 | 分类于 notes

关于glibc堆内存管理,已经有很多文章进行了深入的剖析,这里我记录一下自己学习过程中的一些总结。

Arena结构

glibc是基于ptmalloc2的堆内存管理器,通过arena结构来支持多线程堆内存管理。每一个线程的堆内存状态都由arena结构来纪录,这是一个malloc_state类型的结构体。

阅读全文 »

CBC-byte-flipping-attack

发表于 2018-04-07 | 分类于 ctf

在做ctf题目的过程中,遇到了cbc字节翻转攻击的利用技巧,在深入学习之后,觉得应该记录下来,以免遗忘。

AES CBC模式的加密与解密原理

分组密码链接模式的特点在于:加密时,每一个明文分组(除了第一个明文分组)加密之前都需要和前一个密文分组进行异或处理之后,才可以进行加密处理;解密时,每一个密文分组经过解密处理之后,都需要和前一个密文分组进行异或处理,才可以得到对应的明文分组。

分组密码链接模式,顾名思义,加密和解密过程都是以分组进行的。每一个分组大小为128bits(16字节),如果明文的长度不是16字节的整数倍,需要对最后一个分组进行填充(padding),使得最后一个分组长度为16字节。

对于加密时的第一个明文分组,需要通过和IV(初始化向量)进行异或处理之后,才可以进行加密处理;解密时的第一个密文分组,解密之后,需要通过和IV进行异或处理,才可以得到第一个明文分组。

这里的IV为不可预测的,随机生成的16字节向量,它不需要保密,但是需要保证完整性。

阅读全文 »

Pur3uit

8 日志
2 分类
4 标签
© 2018 Pur3uit
由 Hexo 强力驱动 v3.7.0
|
主题 — NexT.Pisces v6.1.0