pwn工具箱之house of force
来源:互联网 发布:思科网络会议系统 编辑:程序博客网 时间:2024/05/16 04:42
house of force
基本信息
- 利用类型:堆利用
- 堆利用类型:top chunk相关
- 利用思想:通过修改top chunk大小,使得分配任意大小都是从top chunk里边切出来,这样分配一个大小占满想要写的位置和当前分配位置top chunk的差,下一个分配就可以分配出想要写的位置
利用难点
- 需要有办法能够更改到top chunk大小
- 需要能够知道当前位置和要写位置的差值
- 需要能够自由控制将要分配的chunk的大小,也就是malloc的参数值
- 分配后,要能够修改分配出来的内容,这个技巧只负责分配出想要的位置。
详细信息
当相应的bins没有可分配的chunk的时候,malloc会从top chunk去切一部分作为分配的结果。如果top chunk不够大,将会调用sysmalloc向系统申请空间放入top chunk,然后再从top chunk进行分配:
victim = av->top; size = chunksize (victim); if ((unsigned long) (size) >= (unsigned long) (nb + MINSIZE)) { remainder_size = size - nb; remainder = chunk_at_offset (victim, nb); av->top = remainder; set_head (victim, nb | PREV_INUSE | (av != &main_arena ? NON_MAIN_ARENA : 0)); set_head (remainder, remainder_size | PREV_INUSE); check_malloced_chunk (av, victim, nb); void *p = chunk2mem (victim); //此处的victim已经是top chunk alloc_perturb (p, bytes); // 在top chunk里切一块 return p; } /* When we are using atomic ops to free fast chunks we can get here for all block sizes. */ else if (have_fastchunks (av)) { malloc_consolidate (av); /* restore original bin index */ if (in_smallbin_range (nb)) idx = smallbin_index (nb); else idx = largebin_index (nb); } /* Otherwise, relay to handle system-dependent cases */ else // 如果不够 { void *p = sysmalloc (nb, av); // 使用sysmalloc向系统进行分配 if (p != NULL) alloc_perturb (p, bytes); // 切一块 return p; } }
所以,只要使得top chunk的chunk size很大,就可以保证分配多大的数据都会从top chunk里去切一块,而不是使用sysmalloc向系统分配。这样的话,分配一个空间占完从需要修改的地方一直到现在分配的top chunk位置,下一次分配的时候再从top chunk去切,就可以直接分配出想要修改的地方进行修改了。
阅读全文
0 0
- pwn工具箱之house of force
- pwn工具箱之house of lore
- pwn工具箱之house of spirit
- pwn工具箱之fastbin attack
- pwn工具箱之unsorted bin attack
- the House of Force技术简单分析
- Unity3d shader之SWAP Force Depth-of-Field Shader
- PWN练习之环境变量继承
- PWN学习之[Rookiss]-[echo1]
- linux 堆溢出学习之house of spirit(2)
- House of Quality
- house of orange
- pwn学习之dl_resolve学习篇
- PWN练习之精确覆盖变量数据
- CTF-PWN练习之执行Shellcode
- CSAW2016之PWN题目tutorial的解法
- CTF-PWN之fsp-utilize漏洞利用
- PWN学习之[Rookiss]-[simple login]
- POJ 3342 Party at Hali-Bula / HDU 2412 / UVAlive 3794 / UVA 1220
- 编译和链接(一)
- 论文笔记(一) GOTURN
- 数塔
- 二叉树中和为某一值得路径
- pwn工具箱之house of force
- Android——仿优酷节目筛选功能实现
- 三种实现下拉菜单的方式
- TabLayout、ViewPager与Fragment
- 【Android】当关闭通知权限后无法显示Toast的解决方案V2.0
- Android ProgressBar 之源码解析及扩展应用!
- S5700telnet配置及清除console密码举例
- 5-9 Huffman Codes
- C#读取excel文件数据丢失问题