Post List

# PWNHUB-kheap # 保护与漏洞点 保护措施:kaslr、kpti、smep 漏洞点在 keap.ko 中的 keap_ioctl 中,存在 UAF 漏洞 对于 ioctl,需要传入的参数是一个指向 info 结构体的指针 创建的堆大小为 0x20 ,这个大小攻击点感觉就是指向劫持 seq_operations 了 # 漏洞利用 先给出官方的 exp c#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include...

# IO_FILE 相关 目的:此时我们在 tcache 中布置好了 free_hook 相关的 chunk,但如果题目不能利用 malloc 申请,只能利用 calloc 申请,那么我们是无法申请到 tcache 上的 chunk 的。 现在来看看 IO_str_overflow : c_IO_str_overflow (FILE *fp, int c){ int flush_only = c == EOF; size_t pos; if (fp->_flags & _IO_NO_WRITES) return flush_only ? 0 : EOF;...

# tcache_stashing_unlink_attack # 实验代码 c#include <stdio.h>#include <stdlib.h>#include <assert.h>int main(){ unsigned long stack_var[0x10] = {0}; unsigned long *chunk_lis[0x10] = {0}; unsigned long *target; setbuf(stdout,...

# 2.31 版本下的 largebin attach # 实验代码 #include<stdio.h>#include<stdlib.h>#include<assert.h>/*A revisit to large bin attack for after glibc2.30Relevant code snippet : if ((unsigned long) (size) < (unsigned long) chunksize_nomask (bck->bk)){ fwd =...

# sh_v1.1 存在 UAF 漏洞,劫持 free_hook 即可 程序功能分析 touch:创建一个 chunk 并写入一些东西 rm:删除一个 chunk,无 UAF 漏洞 cat:打印一个 chunk 的内容 ln chunk1 chunk2:将 chunk2 指向 chunk1 指向的地址 (漏洞点,这里存在 UAF) 漏洞利用思路:先把 tcache 填满,然后 free 一个 chunk 到 unsorted bin 中,然后利用 UAF 泄露 main_arena+96 的地址,之后再次利用 UAF 改写 tcache 链将 free_hook 链入,然后申请出来,写入...

# SROP # 原理 利用 sigreturn 这个系统调用 当信号触发时,会从用户态陷入内核态,内核会把此时的寄存器和相关的上下文状态 push 进入到用户态的栈中,然后去执行信号处理函数,完成之后,会执行 sigreturn 系统调用,把刚才保存在用户态的栈帧 (SigreturnFrame) 恢复,即不断地 pop 恢复寄存器,因此可以通过这个系统调用控制寄存器的值,前提是要可以控制栈帧。而我们如果有办法可以在调用 sigreturn 之前就布置好栈帧,就可以控制程序流程了。 因此我们的利用过程主要是第 3、4 步,不用信号去触发 sigreturn 系统调用,那么就不会去 push...

# idek2022 部分复现,主要参考 r3kapig 战队的 wp 进行学习和调试 # Crypto # ecrsa 本题是在有限域上的椭圆曲线,即 y2≡x3+ax+bmod  ny^2\equiv x^3+ax+b\mod{n} y2≡x3+ax+bmodn 题目给出了M×eM\times eM×e 和P×eP\times eP×e,其中e=3e=3e=3,相当于在加法群下算3M3M3M 和3T3T3T,考虑使用3T3T3T 来计算aaa、bbb 和nnn 椭圆曲线上的加法,假设P(x1,y1)P(x_1,y_1)P(x1​,y1​)...

# Houst_of_botcake # 实验代码 #include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <assert.h>int main(){ /* * This attack should bypass the restriction introduced in *...

# Crypto # 总结 本次 Crypto 赛道一开始一道同态的题很快做出来了,然后就开始看盖茨比这题,得到相邻两个明文的异或以及明文和密钥的异或很简单,这也很快想到,但之后没思路了,尝试爆破密钥但觉得复杂度太高没有尝试,直到比赛也没做出来,赛后看 wp 发现原来这种形式可以用 mtp 来攻击,学习了。另一道 DDH 则是关于椭圆曲线的,赛后看题解发现涉及双线性对这个知识,没有接触过,这次比赛学习了。 # cat_theory # problem nfrom Crypto.Util.number import bytes_to_long, getStrongPrime,...

# Crypto # ASR problem nfrom gmpy2 import *from Crypto.Util.number import *from secret import flagm = bytes_to_long(flag)R = getPrime(256)S = getPrime(512)A = getPrime(1024)N = R * S * Ac = pow(m, 0x10001, N)RA = R & Aprint('RSA1',hex(RA * S))print('RSA2',hex(RA |...