ROPgadget
看到网上推荐的rop工具,就down了一份ROPgadget
haibin$: ROPgadget --binary /lib/x86_64-linux-gnu/libc.so.6 --only "pop|ret" | grep rdi
看蒸米的文章里有
payload = "\x00"*136 + p64(pop_ret_addr) + p64(binsh_addr) + p64(system_addr)
开始没看懂这个payload,还是太菜
用p64(pop_ret_addr)
覆写了ret_address
, 所以在ret的时候先跳到一个pop rdi; ret
的地方
这个时候栈顶应该已经是p64(binsh_addr) + p64(system_addr)
这部分内容了
所以这个时候pop rdi
就把p64(binsh_addr)
pop到了$rdi
里作为第一个参数
然后ret
跳到p64(system_addr)
,然后起来shell?好像很完美的样子….