摘要:
新的博客地址为 https://zikh26.github.io 之后的博客应该都只发到Github上了,之前的文章也都做了迁移。计划以后就不在博客园上更新文章了**(以前的文章可能出现错误进行更新或者对之前的某些知识有了新的理解,也都只更新到github了,不再维持博客园上的更新)**。 原因如下 阅读全文
摘要:
保护策略: 漏洞所在: 在input函数中,存在一个off by null漏洞。 并且程序执行mmap来映射了一段可读可写可执行的地址,并且还把地址打印了出来。 大致思路: 首先是这道题映射了一段可读可写可执行的区域,同时没开沙箱,如果我们可以在这个地方写入shellcode的话,其实我们再劫持fr 阅读全文
摘要:
写在前面: 通过学习house of orange,又对unsorted bin attack以及FSOP有了一些新的理解。说到底house of orange本身的效果很小,但加上两个组合拳(unsorted bin attack和FSOP)则威力就会变的很大。这篇文章我将对这三种手法都详细记录一 阅读全文
摘要:
cyberprinter 保护策略: 漏洞所在: 首先是printf函数%s可以泄露一个libc地址(让输入写满),然后存在一个格式化字符串的洞,但是if进行了一些检查,无法利用%p或者%x来泄露地址,出题人这里仅仅就是想让我们去任意写而非任意读。 利用思路: 由于程序是系统调用exit退出的,因此 阅读全文
摘要:
写在前面: 这两天打CSAW又学到了一种新的沙箱逃逸的方法--切换进程的工作模式,使用32位的系统调用号执行系统调用,来绕过原本沙箱禁用掉的系统调用。理解起来倒也不难,但是有几个点需要注意一下,这里详细的记录下利用过程。 沙箱的基础知识就不再介绍了,不了解的师傅可以自行百度。 利用过程&&调试 先看 阅读全文
摘要:
保护策略: 漏洞所在: 在edit函数中存在一个off by null漏洞。 程序分析: 在add函数中,对malloc申请的内存大小做了限制,需要小于0x100并且大于0x7f的堆块才行,然后索引我们可以使用0到31**(32没法用,因为这里的len[32]和heap[0]是一个内存单元,如果用了 阅读全文
摘要:
总结 通过这道题的学习与总结有: 这道题考察的依然是利用UAF打unlink。unlink攻击的核心是可以伪造fake_chunk以及控制fake_chunk下面的堆块的chunk头。虽然无法直接溢出,但是我们可以做一个double free,然后打fastbin attack将chunk头申请出来 阅读全文
摘要:
写在前面: 在之前做这道题的时候SWPUCTF_2019_p1KkHeap,就受到了tcache dup+tcache poisoning来爆破申请tcache_perthread_struct结构体的启发,结果在做这道题的时候就遇见了这种手法。由于还需要打io_leak再次爆破半个字节,因此这种手 阅读全文
摘要:
保护策略: 漏洞分析: 在delete函数中,free函数执行后,未将指针置空存在UAF漏洞 在读入数据的函数中,未在字符串的末尾添加\x00,来截断字符串,导致show函数中的%s可能泄露出更多的数据 保护为Partial RELRO,这就意味着我们可以修改got表。 程序分析: 在程序的开始就创 阅读全文
摘要:
总结&&启发: 总结: 通过这道对于tcache机制有了一定的认识。 tcache_perthread_struct结构体是用来管理tcache链表的,它的源码如下: typedef struct tcache_entry { struct tcache_entry *next; } tcache_ 阅读全文