本人真小白,真的0基础。
PWN 是CTF比赛中比较难的部分。首先要做的就是把基础知识打牢。
预备知识:C语言,汇编语言,Linux基础等。
栈,是一段特殊存取的内存。它好比一个盒子,数据好比一本本的书。先放进的书会被放在盒子的最底部,后放进的书会被放在盒子的最上面。这是栈的LIFO原则。
栈溢出。在存放数据的过程中,如果不注意检测数据的顶端是否超过栈的顶端,容易产生栈溢出。
一些汇编语言的常用指令:move A ,B 表示把寄存器B中的内容放到A当中;ret 返回主程序;call 调用一个子程序(结尾需要ret); jmp 无条件跳转;push A 把A压入栈中;pop A 把A从栈中推出;cmp A,B 比较A和B;等等。
其他:X86架构64位模式下的参数传递机制:rdi, rsi, rdx, rcx, r8, r9。
两个特殊:rsp rbp,这两个中,rsp指向栈的顶端,rbp指向栈的底端。
还要下一些常用的工具:pwntools、gdb-peda、one_gadget等。还要用到ubuntu 的虚拟机。
今天先划水到这。(唉我也想写出好的笔记,可我啥也不会啊/无奈/)