两道pwn题的解法(ret2libc)

[if !supportLists]1. [endif]Lab0

   与之前相比,不知道后门函数的地址

第一次payload,利用puts函数泄露libc的地址(plt+main+got,offset可以通过自动化工具得出)

第二次发送payload是为了起shell

可以与之前的exp进行对比

Exp如下:


两道pwn题的解法(ret2libc)_第1张图片

运行并成功拿到shell



两道pwn题的解法(ret2libc)_第2张图片
















 2. pwnme

先上exp


两道pwn题的解法(ret2libc)_第3张图片

因为在IDA中发现了这个


两道pwn题的解法(ret2libc)_第4张图片

 read函数存在漏洞,构造payload,发送给write函数,泄漏出read函数的地址,在利用libc.symbols[‘read’]求出read的相对地址,故libc的地址=泄露的地址-相对地址

这是典型的ret2libc的例子。

第二次是发送payload的起shell。

攻击结果如下,成功拿到shell:


两道pwn题的解法(ret2libc)_第5张图片

你可能感兴趣的:(两道pwn题的解法(ret2libc))