misc
Sanity Check 签到题
pwn
learning oop
上来就是c++pwn
漏洞在读取名字时没有长度检查
当时做的时候卡在泄露libc 我本来是思路是打算构造重叠,通过在一个区域同时分配两个chunk实现泄露
结果update里面有个检查函数,会使用到虚表,导致程序崩溃。并且我的方法没法通过程序逻辑跳过检查,直接流程就卡死了。
参考了网上的wp后,发现应该是通过覆盖size,使得一个chunk强制进入unsorted bin,并且这个chunk篡改后的大小能覆盖到后面的一个fastbin chunk
这样通过unsortedbin切割后 剩下的块仍然进入unsorted bin 的性质 就能泄露bk指针,同时 通过饿死立即free 就不会调用到虚表,update检查就不会使得程序崩溃。
有了libc地址理论上这题就不会很难了。伪造vtable ,覆盖指针 。
最开始我的想法是利用vtable内函数调用时,第一个参数默认是this指针,但是如果/bin/sh写入了 vtable又没法用了,只能用一些能利用到其他寄存器的gadget 而rax 这时候和rdi的值一样的
如果能把rax 附近的值传入rdi 也可以实现system(‘/bin/sh’)
另外 在调用system时由于栈没对齐 需要多push一个
from pwn import * |