简单栈溢出

本文介绍了栈溢出的概念,指出C/C++语言在处理输入时未进行长度检查可能导致的安全问题。讨论了Pwn(利用溢出执行恶意代码)的原理,并列举了保护措施,如Relro、Stack、NX和Pie。还提到了如何使用gdb和objdump分析程序,并给出了pwntools在构造payload中的应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述
1.c与c++不检查输入的长度和类型
应用程序在获取输入的数据时,本来要获取10个,结果获取成12个,就发生溢出
如果输入的变量与程序返回值挨得很近,直接覆盖成我们要执行的a代码
2.什么是pwn
向目标发送特定的数据,使其执行我们发送的恶意代码
Web安全也是一样,比如xss,通过我们输入的xss代码获取用户信息
实际上就是程序没有对用户的输入信息进行严格的校验
3.pwn的基础知识

在这里插入图片描述Ax:储存我们的计算结果和函数返回值
Bx:基址寄存器,存放访问内存的地址
Cx:计数寄存器,比如你要循环5次,你的cx里面就是5
Dx:数据寄存器,存放ro端的一个内存地址
SI:
DI:
Move a,b 从si赋值到di,存的是数据地址
状态标志:标志结果,比如是正数还是负数,还是错误
Cs:放代码
Ds:比如放全局变量
Ss:函数的局部变量
Es:其他段寄存器用光用它,用得比较少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值