CTFshow pwn169
CTFshow pwn169(重叠|劫持stdout)前言 堆块重叠,真的是绕不开的一个手法。只要有uaf漏洞几乎都需要重叠来配合。这一道是比较简单的一道题,自己拖拖拉拉,又捱到了22点才完成这到题。对stdout已经完全不陌生了,感觉像老朋友了。这到题也算又扩展(应该算复习)了堆块重叠的一种方法。 如果说uaf漏洞是在借尸还魂,那么我们重叠的手法就是“瞒天过海” ida分析main函数分析1.一个menu,三个功能2.没有show,应该是需要劫持stdout来泄露libc的 create函数分析1.限制了大小,大小合适才能malloc2.96是0x60,加上chunk头,最大是0x70,这个大小还不够进入unsorted bin delete函数分析1.明显的uaf漏洞 rename函数分析1.没有漏洞只能正常的编辑堆块内容 思路分析1.在保护机制全开的情况下,没有show功能的时候,第一想到的就是劫持stdout。常见做法就是打overlap,让堆块既在fastbins又在unsorted bin中。因为unsorted...
CTFshow pwn168
CTFshow pwn168(UAF|重叠)前言 差不多又休息了一周的时间,然后继续学习。这一题属与是入门级的UAF,太经典了。自己在写的时候还是卡住了,看到没有show这个功能,下意识想到劫持IO。因为堆溢出的题,劫持IO很常见,并且前几题都是如此。但是因为没有溢出漏洞,难以利用unsorted bin 中的chunk,覆盖低位去劫持IO。结果这倒题是用经典的UAF利用,覆盖原功能函数为printf.plt 去泄露栈上的libc,再同理修改原功能函数为system 去执行。 可谓是“狸猫换太子”+“借尸还魂” ida分析creat函数分析1.首先会自动申请一个0x20的堆块,设为ptr12.如果我们输入的字符串长度大于0xf 就会再申请一个堆块来储存st,设为ptr2r;否则就会用0x20的堆块来储存3.如果申请了ptr2,这ptr1指向ptr2,ptr1+3指向某个函数地址;如果没有ptr2,在ptr1中存放str,ptr1+3指向某个函数4.ptr1+4...
CTFshow pwn164
CTFshow pwn164 (tcache dup)前言 一步一步来吧,这是一道2.27版本的利用。同时是需要打__IO_2_1_stdout_去泄露libc地址的。但是难度不大,因为tcache bin 有些太拉胯了。给它一个uaf ,它可以自己double free 7次。这是什么?然后利用realloc 的一个特性,既可以malloc 又 可以 free。 七剑下天山 遇上 双料特工 ,简直无敌了。 ida分析delete功能1.典型的uaf 没有置空,但是ptr是哪来的?2.继续看,add功能 add功能1.ptr在这里,也就是刚刚分配的堆块的指针。2.realloc,一个很有问题的函数。当size不为0时且ptr不为空时:realloc 会检测ptr 的大小,如果ptr_size>=size,就重新分配,切割;否则,会先free...
CTFshow pwn163
CTFshow pwn163(堆块重叠|fastbin )前言 这两天在看IO_FILE 的相关利用,实在是给我看晕了。各种house of 确实有点东西。但是到最后发现自己的基础还是不够,除了fastbins 和 unsorted bins 稍微了解一点。其他的机制可以说是一坨。回来写点题,补一下基础。然后在结合这些基本的手法,去看高级的利用链。这个就是利用堆的布局,去达到我们的目的。或许也可以叫堆风水。 突然觉得堆风水这个名字起得太好了,主要可以自己构造布局,为我所控。真有一种盖周天之变,化吾为王 的感觉。 ida分析edit函数1.其他函数没有漏洞。只有edit,对size 没有检查,可以溢出。2.在它的heaplist上会设置标志位检查这个堆块是否被free。3.show的时候,会根据add时的size...
CTFshow pwn160
CTFshow...
CTFshow pwn143
CTFshow pwn143 (unlink & houce of force)ida分析main函数分析1.经典菜单题2.但是值得注意的是case 5 会调用v4[1] ,可以覆盖其中地址为题目留下的后门函数 add函数分析1.理清题目堆块指针的保存结构,使用list数组保存对应的堆块大小2.使用heaplist数组,保存堆块的地址 edit函数分析1.发现溢出漏洞,可以溢出多字节 show函数分析1.没什么特别的,就是可以用来泄露libc delete函数分析1.没有漏洞,释放后将指针置空了 构造思路1.首先这题在edit时留出了任意长度的溢出,但是没有uaf漏洞。所以这道题首先考虑unlink方法;同时这道题在case5 留出了一个v4给我们操作,那么如果可以通过某种方法申请到这块空间,就可以篡改为题目留下来的后门函数。这里可以使用house of force,也可以考虑fastbin...
系统调用号
syscall 知识梳理系统调用号32位1234567read 3 eax=3 ebx=fd ecx=buf edx=sizewrite 4 eax=4 ebx=fd ecx=buf edx=sizeopen 5 eax=5 ebx=path ecx=flags edx=modeclose 6 eax=6 ebx=fdexecve 11 eax=0xb ebx="/bin/sh\x00" ecx=0 edx=0int 0x80 64位1234567read 0 rax=0 rdi=fd rsi=buf rdx=sizewrite 1 rax=1 rdi=fd rsi=buf rdx=sizeopen 2 rax=2 rdi=patch rsi=flags rdx=modeclose 3 rax=3 rdi=fd execve 59 rax=0x3b rdi="/bin/sh\x00" rsi=0 rdx=0sys_call
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment




