
PWN
文章平均质量分 86
努力学习的大康
这个作者很懒,什么都没留下…
展开
-
逆向分析中的密码学---RSA
0x01 简介RSA算法是公钥加密算法,即可用于数据加密也可以用于数字签名。RSA基于一个简单的数论事实,两个大素数相乘十分容易,将其进行因式分解确实困难的。这篇文章不涉及RSA算法的原理,只涉及RSA算法的流程0x02 算法流程流程时挺简单的选取两个大素数p和q,为了获得最高安全性,设两数长度一样计算n=pq,n称为模计算欧拉函数:φ\varphiφ(n)=(p-1)(q-1)选取加密密钥e,其与φ\varphiφ(n)互素。如果选择的e值合适,RSA加解密的速度会加快。e的常用值为3、1原创 2021-04-21 23:32:10 · 623 阅读 · 0 评论 -
fg_kaslr保护下的kernel pwn
0x01 kaslr类似ASLR,内核基址地址加载随机化。一般绕过思路:通过泄露内核地址,通过偏移计算出内核基址。(kernel_base=leak_addr - offset)再根据内核基址和其他函数的偏移得到目标函数地址(如commit_creds等)0x02 fg_kaslr来自官方[PATCH v3 00/10] Function Granular KASLR 的描述简单的说就是更细粒度的内核地址空间随机化,按照函数级别的细粒度来重排内核代码。所以当再泄露内核地址时,无法通过le原创 2021-03-27 23:40:36 · 1230 阅读 · 0 评论 -
linux kernel pwn -- 2018qwb_core
0x01 查看题目1.查看start.sh启动脚本,开启了kaslr,但是没有开smep和smap,这里有个小坑-m 64M会报错内存不够,可以改成-m 1024Mqemu-system-x86_64 \-m 64M \-kernel ./bzImage \-initrd ./core.cpio \-append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 quiet kaslr" \-s \-netdev user,id=t0,原创 2021-03-22 20:43:47 · 299 阅读 · 0 评论 -
Linux kernel pwn --- CSAW2015 StringIPC
0x01查看题目1.launch.sh。qemu-system-x86_64 \ -m 512 \ -kernel ./bzImage \ -initrd ./rootfs.cpio \ -append "console=ttyS0 root=/dev/ram rdinit=/sbin/init" \ -nographic \ -s \ -netdev user,id=t0, -device e1000,netdev=t0,id=nic0 \原创 2021-03-21 13:20:06 · 355 阅读 · 0 评论 -
linux kernel pwn --- ciscn2017_babydriver
在学习完ctfwiki上关于linux kernel pwn后在github上找了一些以前的题目来练习巩固学到的内容。0x01查看题目1.查看启动脚本boot.sh,启动了smep,不能执行用户空间代码#!/bin/bashqemu-system-x86_64 -initrd rootfs.cpio -kernel bzImage -append 'console=ttyS0 root=/dev/ram oops=panic panic=1' -monitor /dev/null -m 64M --原创 2021-03-19 20:50:22 · 508 阅读 · 0 评论 -
tcache attacke
以glibc2.27为例讲解tcache的各种漏洞利用方式1.1数据结构1.2 malloc和free的过程2.tcache各种漏洞利用方式2.1 tcache poisoning通过覆盖 tcache 中的 next,不需要伪造任何 chunk 结构即可实现 malloc 到任何地址。2.2 tcache dup类似 fastbin dup,不过利用的是 tcache_put() 的不严谨2.3 tcache perthread corruption我们已经知道 tcache_perth原创 2020-12-31 15:01:37 · 600 阅读 · 0 评论 -
Large bin attack
0x01 large binLarge bins 中一共包括 63 个 bin,index为64~126,每个 bin 中的 chunk 的大小不一致,而是处于一定区间范围内。(本文讨论的代码和结构都是在glibc2.23 64位的情况)1.largebin的一些结构在largebin的处理过程中会用到fd_next和bk_nextsize来加快chunk的处理。struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of原创 2020-11-26 00:25:57 · 2027 阅读 · 3 评论 -
unsorted bin attack
0x01 unsorted bin基本来源当一个较大的 chunk 被分割成两半后,如果剩下的部分大于 MINSIZE,就会被放到 unsorted bin 中。释放一个不属于 fast bin 的 chunk,并且该 chunk 不和 top chunk 紧邻时,该 chunk 会被首先放到 unsorted bin 中。当进行 malloc_consolidate 时,可能会把合并后的 chunk 放到 unsorted bin 中,如果不是和 top chunk 近邻的话。基本使用情况原创 2020-11-17 22:06:12 · 434 阅读 · 0 评论 -
fastbin attack快速入门
0x01 fastbin简介Fastbin包含0x20~0x80大小bin的数组指针,用于快速分配小堆块。fastbin按照单链表结构进行组织,相同大小的bin在同一个链表中,fd指向下一个bin,采用LIFO(Last In First Out)机制。在fastbin中,堆块的inuse标志都为1,处于占用状态,防止chunk释放时进行合并,加快小堆块的分配。正常fastbin的使用通过这个简单的案例来了解fastbin的单链表结构,malloc和free的过程。#include<stdio原创 2020-11-13 23:59:31 · 1310 阅读 · 0 评论 -
unlink快速入门
0x01 正常unlink当一个bin从记录bin的双向链表中被取下时,会触发unlink。常见的比如:相邻空闲bin进行合并,malloc_consolidate时。unlink的过程如下图所示(来自CTFWIKI)主要包含3个步骤,就是这么简单。根据p的fd和bk获得双向链表的上一个chunk FD和下一个chunk BK设置FD->bk=BK设置BK->fd=FD下面看一下unlink的源码。#安装源码apt install glibc-source#下面目录下有一个原创 2020-11-12 11:13:43 · 3395 阅读 · 8 评论 -
Chunk Extend and Overlapping
0x01 介绍当存在可以修改chunk.pre_size或者chunk.size这两个字段漏洞时可以overlapping前面或后面的chunk0x02 原理chunk extend 技术能够产生的原因在于 ptmalloc 在对堆 chunk 进行操作时使用的各种宏。获取chunk块大小有两种获取chunk块大小的宏,chunksize( p )得到的是没有inuse位的。chunksize_nomask( p )包含了Inuse位/* Get size, ignoring use bits原创 2020-11-10 23:50:16 · 331 阅读 · 0 评论 -
Off-By-One
0x01 原理严格来说 off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。off-by-one的产生往往和字符串操作有关。如strlen计算长度时,不会计算最后的“0字节”(\x00)。循环读入时,<写成了<=。0x02 利用思路溢出字节为可控制任意字节:通过修改下一个堆块的size造成块结构之间出现重叠,从而泄露其他块数据,或是覆盖其他块数据。也可使用 NULL 字节溢出的方原创 2020-11-09 19:56:14 · 1482 阅读 · 0 评论 -
2020NU1LCTF两道pwn
Signin分析new函数只能对两个vector进行操作。每次new的数量超过限制时就会申请两倍的空间并把原来的空间释放unk_2032A0和unk_2032C0的数据结构struct Node{ void begin;#指向第一个元素,也是堆地址 void now;#指向当前元素 void end;#指向最后一个元素}show函数输出Node.now指向的元素delete函数并不会检测now指针是否小于begin。多次释放配合show可以泄露堆上的内容。0x原创 2020-10-25 23:17:05 · 522 阅读 · 0 评论 -
buu-pwn-heap刷题日记
一开始的题解忘记记录题解了。每天刷两道pwn题babyfengshui_33c3_2016https://blog.youkuaiyun.com/qinying001/article/details/104359401漏洞点在Update函数的比较部分。将des_addr+length和Node_addr - 4进行比较。[V&N2020 公开赛]simpleHeaphttps://blog.youkuaiyun.com/qq_39869547/article/details/104587504https://原创 2020-10-25 23:16:32 · 1258 阅读 · 0 评论