gyctf_2020_bfnote
总结
通过本题的学习与总结有:
- 本题与starctf2018_babystack这题一样,考察的都是篡改TLS中的stack_guard从而绕过canary的检查,因为在2.23和2.27 32位的glibc里面主线程的TLS是位于mmap映射出来的内存,并且位置固定并不随机。而本题可以通过数组索引无限制,而在mmap映射出来的区域精准的修改某个内存,这就给了篡改TLS中的stack_guard的机会
- 本题的难点在于之后绕过canary,无法正常的泄露libc地址,从而造成了一定难度,通过学习网上各位师傅的wp,发现本题一共有三种做法,分别是利用magic gadget篡改got表,ret2dl以及攻击IO_FILE。这里我采用的是利用magic gadget篡改got表