rwxp权限ok的,我们是可以把shellcode写到这里的
step5 计算偏移
step6 exp开始
1、自动生成的shellcode 的exp 如下:
告诉电脑我们是什么程序,32位嘛不是,所以是i386,我的操作环境是linux
然后获取进程
利用pwntools自动生成shellcode
payload还是,条用shellcode的ljust方法,两个参数依次是偏移量和用什么填充,再加上覆盖的地址
然后发送和获取交互环境
我们运行一个这个ex
撒花撒花!!!!
2、手写shellcode
给大家来讲解一下这个手写的shellcode
我们都知道最核心的是/bin///sh
所以我们在手写的时候push了3个参
push了68 ,对照ascll码也就是h
之后的两个push也就是h///nib/
系统读取的时候是从右到左的,所以小端读进去之后也就是/bin///sh
再和大家说一下为什么是三个/ 如果主要是避免0的出现,/bin/sh从意思上就已经OK了,但是这样子的话不够8位,会自动补0,如果是0的话系统读到00就自动终止了,所以是///
mov ebx,esp呢就是我们最后读的/bin///sh给到了ebx
两个xor的原因是我们要将exc和edx清空,不能赋值给0
push 11 11是我们execve的系统调用号
pop eax 尽量用push + pop的方式来给寄存器赋值
这样子就ok了
希望大家有所收获!!!!