pwn
文章平均质量分 90
hollk
FUZZ && PWN
展开
-
how2heap(6):tcache_stashing_unlink_attack 2.31
tcache_stashing_unlink_attack主要利用的是small bin链表中摘堆块后重新排列进tcache的原理源码//gcc -g tcache_stashing_unlink_attack.c -o tcache_stashing_unlink_attack_231 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main()原创 2021-09-14 18:08:35 · 551 阅读 · 0 评论 -
how2heap(5):tcache_poisoning 2.31
tcache_poisoning 2.31依然还是将非堆段地址作为伪造堆块挂进tcache bin中,重新申请作为正常堆块启用源码 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stdint.h> 4 #include <assert.h> 5 6 int main() 7 { 8 // disable buffering 9原创 2021-09-14 10:51:13 · 483 阅读 · 0 评论 -
how2heap(4):tcache_house_of_spirit 2.31
tcache_house_of_spirit 2.31比较简单,一句话概括就是释放一个不属于堆段的伪造堆块,然后重新申请源码 // gcc -g tcache_house_of_spirit.c -o tcache_house_of_spirit 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main() 6 { 7 s原创 2021-09-01 12:13:52 · 359 阅读 · 0 评论 -
how2heap(3):overlapping_chunks 2.31
overlapping_chunks 2.31源码 1 /* 2 3 A simple tale of overlapping chunk. 4 This technique is taken from 5 http://www.contextis.com/documents/120/Glibc_Adventures-The_Forgotten_Chunks.pdf 6 7 */ 8 9 #include <stdio.h> 10 #inclu原创 2021-08-31 17:15:08 · 413 阅读 · 0 评论 -
how2heap(2):fastbin_reverse_into_tcache 2.31
fastbin_reverse_into_tcache 2.27源码 # gcc -g fastbin_reverse_into_tcache.c -o fastbin_reverse_into_tcache 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <assert.h> 5 6 const size_t allocsiz原创 2021-08-25 10:52:42 · 570 阅读 · 0 评论 -
how2heap(1):fastbin_dup 2.31
fastbin_dup 2.27源码 # gcc -g fastbin_dup.c -o fastbin_dup 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main() 6 { 7 setbuf(stdout, NULL); 8 9 printf("This file demonstrates a原创 2021-08-25 10:39:18 · 829 阅读 · 4 评论 -
通过一道ARM PWN题引发的思考:jarvisOJ_typo
最近做了一道ARM架构的PWN题,给我带来很多的思考。为什么要做ARM的呢?因为在很久之前就提及过想要向IoT漏洞挖掘方面进行延展,并且有过一段时间去复现一些路由器的漏洞,但是感觉基础并不是很扎实。所以这段时间潜心学习ARM寄存器及指令集,并且通过接下来的这道ARM PWN题进行实践与摸索,文章的末尾也会列出通过这道题带来的一些感悟希望我们都能找到自己的方向,按照计划不断前行。编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ原创 2021-06-28 18:45:50 · 1313 阅读 · 7 评论 -
ubuntu20.04 PWN(含x86、ARM、MIPS)环境搭建
最近在ubuntu20.04中重装了一遍PWN的环境,顺带着安装了ARM和MIPS的交叉编译及运行环境。装的时候也是摸着石头过河,好在拍了很多快照,即使装错了也没有关系,下面是已装的工具列表:原创 2021-06-25 13:28:39 · 30411 阅读 · 51 评论 -
好好说话之House Of Einherjar
又鸽了好久,抱歉哈~ 总的来说House Of Einherjar这种利用方法还是挺简单的,有点像chunk extend/shrink技术,只不过该技术是后向,并且利用top_chunk合并机制,个人觉得杀伤力比较强大原创 2021-06-10 20:30:01 · 1313 阅读 · 8 评论 -
(补题)HITCON 2018 PWN baby_tcache超详细讲解
好久没有更新了,这道题利用的是IO_FILE输出的方式进行泄露libc地址,需要结合着上一篇[好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc]一起来看,最近参加了安网杯,其中的pwn题也是利用IO_FILE进行输出的题,很幸运获得的第二名的成绩,大佬带飞~ 得抓紧把好好说话系列写完啦~原创 2021-05-19 18:59:44 · 1599 阅读 · 17 评论 -
好好说话之off-by-one
从这篇开始就进入堆的范围了,又是两万字”小论文“,关于堆的相关知识请参考wiki上的章节。博主直接讲做堆的技巧,这篇讲off-by-one,也是踩了很多的坑。这篇文章因为写的比较详细,所以会很长,如果有忘记的知识点请翻阅目录查看。感谢在学习中帮助过我的大佬们:NoOne、povcfe原创 2020-08-24 17:12:44 · 5430 阅读 · 9 评论 -
好好说话之整数溢出
整数溢出C语言中的整型分类C语言中的整型按数据类型主要分三类:短整形(short)、整形(int)、长整形(long)按符号分类:有符号、无符号每种数据类型都有自己的大小范围:类型字节范围short int2byte(word)032767(00x7fff)-32768-1(0x80000xffff)unsigned short int2byte(word)065535(00xffff)int4byte(word)02147483647(00x7fff原创 2020-08-13 11:18:59 · 1179 阅读 · 3 评论 -
好好说话之hijack retaddr
格式化字符串做到这里,博主有一些感悟。相比于栈溢出来讲,格式化字符串漏洞对于泄露或者覆盖闲的更容易点,主要注意的就是第几个参数,使用%p、%s、%n这几种格式化字符串。也可能是我做题比较少的原因,只遇到了这几个。最近一直做格式化字符串,所以做得比较顺手,希望看这篇文章的你也能有所收获。编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノhijack retaddr看名字就能知道这一次我们劫持的是ret返回地址,我们通过覆盖返回地址,printf函数结束后让原有的执行流程发生改变原创 2020-08-11 14:56:35 · 1031 阅读 · 4 评论 -
好好说话之hijack GOT
这种方法的原理其实和栈溢出很相似,基本流程都是泄露libc,查找system函数,写/bin/sh字符串,所以你看过我以前的博客,相信理解这个原理以及例题会很容易,一起加油,祝我们早日成为大佬????原创 2020-08-07 20:53:16 · 1418 阅读 · 3 评论 -
好好说话之64位格式化字符串漏洞
64位格式化字符串和32位的很相似,做题的步骤也相同,唯一不同的是64位程序对函数参数存储的方式和32位的不同。64为程序会优先将函数的前6个参数放置在寄存器中,超过6个的再存放在栈上,而32位直接存放在栈上。寄存器存放顺序可以看我之前写的好好说话之ret2csu编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ例题选自2017-UIUCTF-pwn200-GoodLuckchecksec搞一下64位程序,开启了NX保护、Canary。因为我们知道这是一道格式化字符串的题原创 2020-08-06 13:28:14 · 2869 阅读 · 0 评论 -
好好说话之格式化字符串漏洞利用
编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ一、格式化字符串漏洞利用格式化字符串漏洞两大利用手段:是程序崩溃,因为%s对应的参数地址不合法的概率比较大查看进程内容,根据%d,%f输出了栈上的内容二、程序崩溃一般输入若干个%s即可%s%s%s%s%s%s%s%s%s%s%s%s%s%s栈上不可能每个值都对应了合法地址,总会有某个地址可以使得程序崩溃,不能控制,但是可以玩坏。例如,如果远程服务有个格式化字符串漏洞,那么就可以攻击其可用性,使服务崩溃,进而使原创 2020-08-05 17:32:11 · 3215 阅读 · 5 评论 -
好好说话之Stack smash
Stack smash我们之前一直没有做过关于canary保护的题,那么这个Stack smash就是绕过canary保护的技术。在程序加载了canary保护之后如果我们是在覆盖缓冲区的时候就会连带着覆盖了canary保护的cookie,这个时候程序就会报错。但是这个技术并不在乎是否报错,而是在乎报错的内容。stack smash技巧就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动canary保护之后,如果发现canary被修改的话就会执__stack_chk_fail函数来打印argv原创 2020-07-28 14:10:08 · 1937 阅读 · 8 评论 -
好好说话之SROP
这个例子写的也非常详细,前面的理论部分出自wiki,是因为博主觉得自己写出来的理论并没有wiki表达的好。但是不要着急关闭,往后看一看,后面的尝试、思路构建及自己做题遇到的问题,都会有详细的讲解。编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ原创 2020-07-26 17:27:54 · 1579 阅读 · 8 评论 -
好好说话之ret2_dl_runtime_resolve
当初毕业论文就写了一万五千字,没想到一篇ret2_dl_runtime_resolve博客三万两千字~~我吐了~~ 。由于内容比较详细,无法避免有些知识点会忘记,可以通过目录翻阅忘记的内容编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ原创 2020-07-21 10:33:38 · 2742 阅读 · 25 评论 -
好好说话之re2reg
一、原理:查看溢出函数返回时哪个寄存器指向溢出缓冲区查找call reg或者jmp reg指令,将EIP设置为指令地址reg所指向的空间上植入shellcode(确保该空间是可以执行的)二、BROPBROP(Blind ROP)瞎几把ROP,用在看不到程序C代码和二进制文件的情况下,对程序进行攻击,劫持程序的执行流。就有点像SQL注入当中的盲注,不会直接看到关键的信息,需要一个一个的...原创 2020-06-22 10:10:52 · 13475 阅读 · 11 评论 -
好好说话之ret2csu
一、x64寄存器在64位程序中,函数的前6各参数是通过寄存器传递的,可以看到rdi作为第一个参数,rsi作为第二个参数,rdx作为第三个参数,rcx作为第四个参数,r8作为第五个参数,r9作为第六个参数。也就是说在函数调用参数的时候会依次在六个寄存器中寻找,如果参数多余6个,那么就需要在栈中寻找。63 31 ...原创 2020-06-22 10:10:36 · 5751 阅读 · 25 评论 -
好好说话之ret2libc3
题目路径:/ctf-challenges/pwn/stackoverflow/ret2libc/ret2libc3看一下C代码#include <stdio.h>#include <stdlib.h>#include <time.h>char buf2[100];void secure(void){ int secretcode, in...原创 2020-06-22 10:10:18 · 1440 阅读 · 1 评论 -
好好说话之ret2libc2
题目路径:/ctf-challenges/pwn/stackoverflow/ret2libc/ret2libc2看C代码#include <stdio.h>#include <stdlib.h>#include <time.h>char buf2[100];void secure(void){ int secretcode, inpu...原创 2020-06-22 10:10:09 · 1217 阅读 · 4 评论 -
好好说话之ret2libc1
题目路径:/ctf-challenges/pwn/stackoverflow/ret2libc/ret2libc1一、原理ret2libc 即控制函数的执行 libc 中的函数,通常是返回至某个函数的 plt 处或者函数的具体位置 (即函数对应的 got 表项的内容)。一般情况下,我们会选择执行 system("/bin/sh"),故而此时我们需要知道 system 函数的地址看C代码...原创 2020-06-22 10:10:01 · 1458 阅读 · 4 评论 -
好好说话之ret2syscall
题目路径:/ctf-challenges/pwn/stackoverflow/ret2syscall/bamboofox-ret2syscall看C代码#include <stdio.h>#include <stdlib.h>char *shell = "/bin/sh";int main(void){ setvbuf(stdout, 0LL, 2,...原创 2020-06-22 10:09:52 · 1041 阅读 · 5 评论 -
好好说话之ret2shellcode
本题为ret2shellcode-example题目路径/ctf-challenges/pwn/stackoverflow/ret2shellcode/ret2shellcode-example一、原理ret2shellcode,即控制程序执行 shellcode 代码。shellcode 指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的 shell。一般来说,shell...原创 2020-06-22 10:09:43 · 1717 阅读 · 6 评论 -
好好说话之ret2text
本题为bamboofox-ret2text题目路径:/ctf-challenges/pwn/stackoverflow/ret2text/bamboofox-ret2text一、原理ret2text 即控制程序执行程序本身已有的的代码 (.text)。其实,这种攻击方法是一种笼统的描述。我们控制执行程序已有的代码的时候也可以控制程序执行好几段不相邻的程序已有的代码 (也就是 gadget...原创 2020-06-22 10:09:32 · 2024 阅读 · 3 评论 -
栈保护机制
一、CANNARY(栈溢出保护) 栈溢出保护是一种用缓冲区溢出攻击环节手段,当函数存在缓冲区溢出漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候就会向往栈里插入cookie信息,当函数真正返回的时候回验证cookie信息是否合法,若果不合法就会停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败...原创 2020-06-22 10:09:21 · 5147 阅读 · 4 评论