介绍参考文章:https://blog.wingszeng.top/pwn-glibc-setcontext/
https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/advanced-rop/srop/
在glibc2.27及之下,遇到堆题目开启了沙箱,通常是使用setcontext+53 srop orw去达到获得flag...
介绍最初学的时候看的文章:this
栈迁移:在于溢出的长度不够布置ROP链,可以迁移栈到一个合适的地址,合适的空间,布置ROP链,然后执行ROP链,getshell。
原理修改ret address为leave ret,将rbp修改为要迁移的地址,即可栈迁移。
12leave 相当于 mov rsp, rbp; pop rbp ;ret 相当于 pop rip
第一次leave ret...
前言参考:这篇文章
装好sage:下载链接
Franklin-Reiter介绍该攻击方法在于两个明文m1,m2,这两个明文利用同一个e和m,并且m2和m1间具有线性关系,例如:
1m2 = a*m1 + b
并且给出了c1,c2
12c1 = pow(m1, e, n)c2 = pow(m2, e, n)
知道c1,c2,a,b,n,那么m1是可解的
原理
因此最后的解的形式...
介绍参考文章
House Of Botcache是用于绕过tcache double free检查的一种方法,在glibc2.29-2.31,对于tcache加入了key值来检测该tcache是否已经存在于tcache bins中,该方法就是借用unsorted bin来绕过double free的检查,下面跟着源码来分析一下。
源码源码文档
tcachekey值的引进
2984行
...
rsa中的共模攻击参考文章
介绍共模攻击是指在不分解d的情况下依旧可以求出m的一种算法,常见给出了c1,c2:
12c1 = pow(m , e1 , N)c2 = pow(m , e2 , N)
要求gcd(e1 , e2)=1,即e1,e2互质,那么则有:
12e1*s1 + e2*s2 = 1// s1,s2一正一负
可以有:m = ( c1^s1 * c2^...
前言题目链接
本次比赛对基础的要求可谓是很深啊,记录一些自己需要学习的或者是基础不牢固,所需要学习的点
NotEnoughTime题目链接
运用正则匹配运算数学式子
贴一份官方wp
123456789101112131415161718from pwn import *io = ...io.sendlineafter(b"=", b"2")io...
什么是伪随机?对于基本的随机数生成,比如说
123srand randsrandom random# 位于stdlib头文件里面
这两个函数的随机数生成都基于时间种子seed,通常来说,只要glibc相同,seed相同,那么所生成的随机数就是一样的。
下面简单介绍一下随机数生产的代码123456789#include <stdio.h>#include <stdlib.h...
参考:
House of Orange - CTF Wiki (ctf-wiki.org)
1.介绍house of orange 在于我们没有free的时候,一样可以达到free的效果,将一个chunk放进unsorted bin中,然后达到泄露libc的效果
操作的原理简单来说是当前堆的 top chunk 尺寸不足以满足申请分配的大小的时候,原来的 top chunk 会被释放并被...
提要参考文章:ctfwiki
神奇的泄露libc:通过malloc大于top chunk size的chunk,泄露出的chunk地址与libc存在固定的偏移
原理介绍运用条件
可以修改top chunk的size大小
可以控制分配任意大小的chunk
原理分析当我们malloc的时候,若是空闲的堆块无法满足malloc的要求,就会从top chunk中分割合适的chunk
如果top...
无法堆溢出修改chunk的unlink+整数溢出题目链接
有符号整型与无符号整型比较 -> 存在溢出
unlink完整表示
以往的unlink都是可以堆溢出修改相邻chunk的prev_size以及其size_inuse,然后构造出一个fake_free_chunk,然后free相邻的chunk,这两个chunk就会合并,从而达到unlink的效果,如下图:
接着上图讲:chu...