thinkycx.me
RSS Feed

Articles

  • 一种轻松扩展ELF可执行内存的方法

    在ELF文件中寻找可执行空间的办法很多,例如:patch无用的代码段、利用.eh_frame、修改PHDR增加一个新的Segment等等。本文介绍一种简单又通用思路:扩展原有的Segment。(注:本方法对与32位程序不适用)

    关键词:ELF、可执行空间扩展。

  • IDA Python 自动化检测格式化字符串漏洞

  • cannary是如何生成的?

    canary是如何生成并且写入TLS中0x28的?

    canary是rbp之前8byte大小的随机区域(最低位为0),从fs:0x28读取并且在函数返回前校验。

    简而言之,在ELF加载到内存后,执行_start函数时,最终会调用security_init()函数来向tcbhead_t.stack_guard中写入canary的值。其中canary的值是内核已经生成好保存在_dl_random中的。glibc仅仅是将其最低位置为0后就存入tcbhead_t.stack_guard中。具体细节如下:

  • 浅析 house of lore

    条件:控制smallbin中第一个chunk(假设为victm)的bk,bk指向要写的位置。bk->fd要为victim。这时malloc会从smallbin中取出chunk,同时last(bin)就为我们伪造的bk了,下次malloc时就可以得到。同时需要注意下次malloc时,还会检测bk->fd要为victim。

    这个利用条件比较难满足。

  • SECCON2016 tinypad - house of einherjar - inuse smallbin/largebin chunk extend

    本文参考ctf-wiki,简述house of einherjar的原理,并简单介绍SECCON2016 tinypad的利用思路,记录写exp时遇到的几个问题。

  • HITCON Training lab13 heapcreator - inuse fastbin chunk extend

    题目来自HITCON-Training@Angelboy,off-by-one 修改inuse的fastbin chunk size,free该chunk获取一个稍微大的的fastbin chunk。再次malloc实现fastbin chunk overlap,从而可以修改关键指针,hjiack got getshell!

  • BCTF2018 Easiest - fastbin attack

    这是BCTF2018中一道关于fastbin attack的简单题,重点阐述一下double free时fastbin attack的利用思路和size的伪造方法。PS:从这篇博客开始,图片如果可以引用raw.githubusercontent.com中的,就不单独上传到博客中了。

  • HITCON2014 stkof -温故知新unlink & fastbin attack

    这题是HITCON2014中一道高分题,放到今天来看也就是考察普通的unlink利用。既然重新做了,就好好的写一下,省的以后再返工。废话不多说,具体来看一下。后续发现fastbin attack也可以做,见文末更新。

  • pwnable.kr toddler - all writeups

    pwnable.kr toddler部分21道关卡的writeup合集。

  • XDCTF2015 bof - ret2dlresolve attack in i386

    本文以XDCTF2015的bof这题为例记录一下利用ret2 dl-runtime resolve来控制程序函数解析,最终getshell的过程。想要实现整个过程,需要非常清楚动态链接的程序调用libc中函数时的解析过程,原理可以参考《程序员的自我修养》chapter7.4和chapter7.5,之后可以继续阅读pediy的文章,见参考[1]。了解原理后,就可以看ctf-wiki或本文的实践过程了。本文所有源码放在https://github.com/thinkycx/pwn/ 中的XDCTF2015文件夹下。