p1KkHeap
0.环境
1.文件信息
2.文件开启的保护
3.IDA分析
main函数
add
show
edit
delete
delete功能出现了指针悬浮的问题,配合上tcache,可以任意地址申请。
思路
程序禁用了system和execve,但是mmap出了一个R/W/X的区段。
我们可以通过double free 再 fix 的方式来修改tcache的struct,从而leak出libc地址 && 写入shellcode && 将 __malloc_hook改成R/W/X的区段。
login
0.环境
1.文件信息
2.文件开启的保护
3.IDA分析
一个简单的格式化字符串漏洞,在 函数 sub_804854B 里,出现了直接调用printf输出字符串的现象(这个字符串的内容完全由用户控制)
但是这道题的解决思路不是改got表的解析或修改__fini_array。
根据动态调试可以发现,当执行 printf(s1); 时,在栈上存储了很多栈地址,并且他们是构成了单向链条的,因此我们可以利用栈上的栈地址,通过 %n 去修改栈上的栈地址为返回地址,从而跳到 one_gadget 拿到 shell。
参考链接: