写这个系列的文章是因为想系统回顾之前学过的ctf知识,也希望引领更多人入门。
1. 对pwn的理解
pwn是ctf的一种题型,主要是利用程序中的漏洞造成内存破坏以获取远程计算机的shell,从而获得flag。对面服务器运行的更多是C/C++语言编写的程序,而我们通过网络与服务器进行数据交互,我们可以构造恶意数据发送给服务器,导致服务器执行恶意代码,从而远程控制服务器。
个人感觉逆向工程是pwn的基础,两者极其类似。学习pwn的门槛比web高很多,所以更需要长期的钻研与学习。
2、pwn入门学习的几点建议
首先就是要不仅仅关注漏洞的利用技巧,要打好基础,认真学习编译原理、ics、汇编语言、计算机体系架构,真正深入底层去了解程序在计算机上运行的原理,这样才能真正的成为高手。
3、Linux背景下的pwn入侵
首先我们要知道几个概念。
ESP:栈指针
EBP:帧指针寄存器
ESP是栈顶指针,EBP是基址指针,EAX是返回值。
linux下的可执行文件格式为ELF,类似windows的PE格式。
大家主要需要了解ELF头、Section节与Segment段的概念。
ELF文件由多个节组成,其中不同的节存放不同的数据。
例如.text、.rdata、.data、.bss以及.plt与.got节,读者可自行查阅。
基本点如上。
后面会结合具体题目进行wp讲解。