Loading...
这个问题真的是非常麻烦,但是不解决又确实是很多题都没法做。我使用的方法是先获取题目的靶机所用的libc版本,然后自行编译这个libc,获得其ld,然后通过patchelf改变elf文件使用的libc。整个过程十分的痛苦,而且即便我现在已经成功的实现改变elf文件使用的libc,未来还可能会有各种各样的奇怪问题。自行重新编译的原因是本机的ld版本过高,如果直接只替换libc的话很可能是会出错的...
之所以会写这一篇回顾是因为堆漏洞我还是学不进去,就先做一些体力劳动。总体来讲11月在pwn上的成果我还是比较满意的,基本上做到了一天一题,栈上漏洞利用已经学会的有ret2textret2shellcoderet2libcret2csuSROPret2syscall(由于SROP可以说会了,这个虽然没做到过题但也可以说会了)DynELF和LibcSearcher的使用还需要学习的有bropre...
值得注意的东西堆利用和格式化字符串的套路:基本上就是leak libc->覆写got->ret2libcprintf(&s);call regplt和gotcontext的使用IDA有时候会有分析错误,比如printf不限制输出长度时会分析为限制,这时应该实际上手试一下对开启了pie的程序可以在gdb中通过b * $rebase(偏移)下断点,也可以在程序等待输入的时候按CTRL+C让他暂停...
首先我想说,格式化字符串漏洞,会出现再形如printf(&s);这样的语句中,如果输出的参数等与输入有关,那么,就可能会自然的使用这样的方法,然鹅另一方面,漏洞本身有极高的危险性。小技巧有些时候,我们需要写入的不是一个较小的值,相反可能非常的大,比如写入地址,这个时候我们可以使用%n$hhn(写一个字节),%n$hn(写两个字节)来减小输出的字符串长度。当然可供我们输入的字符串可能比较短,这...
之前做了一道pwn的极简单的入门题,结果做了2天,为什么会花这么多的时间呢,部分原因是对python不太熟悉,以为十六进制数末尾要加b(实话说我实在想不通我当时为什么会有这种想法),结果总是返回不到正确的地址。主要的原因还是我当时没理解栈帧的结构,不相信自己构造的payload是对的,而且也没有用gdb进行有效的调试。所以这次我学习了一下C语言的函数调用栈。注:接下来如无特殊说明,汇编语法都...