其他分享
首页 > 其他分享> > pwn的学习记录

pwn的学习记录

作者:互联网

pwn学习内容:
(1)了解Linux ELF文件
(2)分析掌握栈溢出原理理解函数参数的传递过程栈空间变化
(3)掌握查找ROPgadget、32位和64位的exp构造
(4)掌握返回导向编程ROP,ret2libc、ret2_dl_resolve
(5)掌握linux系统延迟绑定机制:GOT、PLT查看libc库函数地址
(6)掌握堆溢出原理掌握动态内存管理malloc、free实现方法掌握堆溢出利用方法
(a)二次释放
(b)unlink技术利用
(c)释放后重引用漏洞
(d)fast binattack利用
(e)house of 系列利用
(f)unsorted bin attack利用
(g)函数hook地址覆盖
(7)理解格式化字符串原理
(8)理解竞争条件漏洞
(9)理解整数溢出原理
(10)了解常用系统保护措施:checksec(-NX-canary-RELRO–PIE)
(11)了解保护措施相关绕过方法
(12)SSP 泄露利用泄露
(13)canary利用

【参考铁人三项考纲】

有关linux elf文件的内容:带你认识Linux中的ELF文件 | w3c笔记 (w3cschool.cn)

elf为一类文件类型:可执行文件(.out),可重定位文件(.o),共享目标文件(.so)

栈溢出原理:

栈溢出是缓冲区溢出中的一种。函数的局部变量通常保存在栈上。如果这些缓冲区发生溢出,就是栈溢出。最经典的栈溢出利用方式是覆盖函数的返回地址,以达到劫持程序控制流的目的。x86构架中一般使用指令call调用一个函数,并使用指令ret返回。CPU在执行call指令时,会先将当前call指令的下一条指令的地址入栈,再跳转到被调用函数。当被调用函数需要返回时,只需要执行ret指令。CPU会出栈栈顶的地址并赋值给EIP寄存器。这个用来告诉被调用函数自己应该返回到调用函数什么位置的地址被称为返回地址。理想情况下,取出的地址就是之前调用call存入的地址。这样程序可以返回到父函数继续执行了。编译器会始终保证即使子函数使用了栈并修改了栈顶的位置,也会在函数返回前将栈顶恢复到刚进入函数时候的状态,从而保证取到的返回地址不会出错。

ROPgadget:(6条消息) (Pwn)CTF工具 ROPgadget 的安装与使用介绍_半岛铁盒@的博客-CSDN博客_ropgadget

 

标签:返回,函数,记录,调用函数,学习,地址,指令,pwn,溢出
来源: https://www.cnblogs.com/Li12138/p/16481592.html