2019 第十届 SWPUCTF writeup(Pwn)

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。


参考链接:

官方writeup:https://www.anquanke.com/post/id/194640#h3-13

题目文件:https://github.com/DrsEeker/swpuctf2019

猜你喜欢

转载自www.cnblogs.com/imiopr/p/12034929.html