前言
记录一下自己在做pwn的过程当中学到的一些东西,以前不知道的东西等等,碰到的坑也会记录在
这里,主要目的是帮助自己记录一下经验。
其实每一道题基本上能学到的新东西是有限的,记录下来避免什么时候想不起来。
顺序比较乱,基本上根据我做题的顺序定的,比较随意。
pwn
other place(not from ctf)
- 多用gdb调试,有思路可以先写出来调试一下看看效果再说
- 遇见pie考虑写malloc_hook,free_hook等,这些与malloc_state相关,也就是需要main_arena
- smallbin, largebin等非fastbin在链表为空时指向自己,也就是指向main_arena中,可以用来泄漏main_arena,从而得到libc
hitcon-2016
babyheap
- ubuntu 16.04后scanf的缓冲区会使用heap,超过大小的就会放入heap,接下来的scanf会从刚才
heap中的缓冲区取 - 使用read而不是readline的时候很容易因为读取的内容不够(比如最多本来可以读100个,但是我这边
只发了20个字节的时候)导致后面的内容被接上去,也就是两次send在远程只进行了一次read,而本来
想要的是两次read。方法是通过sleep或者raw_input使得不连起来发,隔开就可以了。 - 漏洞也可能位于输入输出函数
ichunqiu427-2017
smallest
- 使用srop可以用来更改寄存器的值,从而使得能够控制更多寄存器的值
- 环境变量位于栈顶,其中的字符串也位于