缓冲区溢出你的第一个“HelloWorld“

首页

简单PWN掉你的第一个入门程序,绕过if语句,进入命令执行函数反弹shell

代码

地址:https://github.com/MartinxMax/PWN

缓冲区溢出你的第一个“HelloWorld“_第1张图片

缓冲区溢出你的第一个“HelloWorld“_第2张图片

解题过程

gcc 1.c -o Main

编译C文件

缓冲区溢出你的第一个“HelloWorld“_第3张图片

gdb ./Main
进入gdb调试器

(gdb)start 启动

(gdb)set disassembly-flavor intel 修改intel显示模式

(gdb)disassemble $rip 查看rip当前指向的位置

缓冲区溢出你的第一个“HelloWorld“_第4张图片

我们所需要做的就是,al必须为0x61

缓冲区溢出你的第一个“HelloWorld“_第5张图片

简单来说就是通过不断输入字符a,使rbp-0x10地址所的数据溢出到rbp-0x8地址范围内,并且覆盖数据

缓冲区溢出你的第一个“HelloWorld“_第6张图片

在gets函数后打下断点,并且输入超长字符,结果rbp-0x8地址范围中的数据确被覆盖

缓冲区溢出你的第一个“HelloWorld“_第7张图片

根据现象,当输入AAAAAAAAA时,就可以反弹一个shell

缓冲区溢出你的第一个“HelloWorld“_第8张图片

你可能感兴趣的:(PWN,c)