ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pwn的学习记录

2022-07-15 15:33:46  阅读:156  来源: 互联网

标签:返回 函数 记录 调用函数 学习 地址 指令 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有