题目是道很经典的rop链构造的题,攻防世界的pwn100,gadget怎么构造我都明白了,就是搞不懂为什么要这么构造例如最后调用system的payload如下payload = b'A' * 72 + p64(addr_pop_rdi) + p64(addr_sh) + p64(addr_sys) + p64(addr_main) + b'A' * 96
为啥不能直接payload = b'A' * 72 + p64(addr_sys) + p64(0) + p64(addr_sh) + b'A' * 104为啥一定要借助pop rdi呢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
git_91357jnabnsn Linux 64位系统,传参是先rdi rsi等几个寄存器,然后才到栈。多出来那个gadget,就是把栈里面那个赋值给rdi,也就是成为system的参数。