1.堆
一般套路就是uaf,释放unsortedbin后,show(),获取libc的基址。然后获取free_hook或malloc_hook的地址,通过tcachebin或fastbin的伪造堆块,实现地址任意写。
存在明显堆溢出漏洞时,可以通过unlink实现地址任意写。
注意观察堆块的结构,多用gdb调试,查看unsortedbin与malloc_hook的距离,一般是0x60左右,在malloc_hook周围找到 0x7f的字段作为fake fastbin的size域。
2.srop
这周刚学的,主旨就是调用syscall(15)时会将栈顶的信息提取恢复,可用pwn自带的SigreturnFrame()构造,伪造rsp,rip等寄存器的情况。
在汇编中若存在 pop rax;syscall的字段可以考虑伪造。
3.随机数
可以调用ctype的库进行随机数预测,但是根据做题经验,一般种子为time的随机数不太方便预测,在范围较小是可以选择爆破,在范围较大时,可以看看能不能修改种子。
4.汇编
lea rax,[rbp+buf] 将buf的地址传给rax,lea中[]单纯代表传地址。但是在mov中,[]代表地址中的值。
下周:复习操作系统,学习house系列和off-by-null
#刚得知CISCN半决赛每个学校只能有2支队伍,很伤心。