花式栈溢出在这之前确实对这方面了解很少,一般这种花式栈溢出不仅仅要求你能发现漏洞,最主要的是你要有随机应变的能力这个题是一个64位的题目看一下保护canary 和 nx保护都开了,我们用ida打开看一下那么程序主要是要你给一个地址和一个值,他会把你给的值放入你给的地址里面,然后就没了,看起来只能改一个地址...
首先是程序中给出了两次任意地址读的机会。首先考虑泄露栈地址。通过调试发现: 在距离buf有0x28长度的地址(0x7ffd58472238 - 0x7ffd58472210 = 0x28)储存了一个栈地址(0x7ffd58472308),计算一下与buf地址的偏移,得到buf的地址。 p.sendlineafter(b"i am bad boy n",b"40") buf_addr=u64(p.recv(6...
然后是获取溢出长度。 先用 cyclic 200 得到字符串。 然后启动程序,会让我们输入字符。把刚才生成的字符串输入进去。 这就是我们溢出的地址。 用 cyclic -l 0x6261616b 得到溢出长度 接下来就可以用 ret2libc 来写了。 frompwnimport*fromLibcSearcherimport* context.log_level ="debug"p = remote("pwn.chal...