改机器指令
直接修改程序机器指令,改变程序执行流程
操作思路
总思路
- 通过反汇编查找含有跳转指令的汇编行,修改该部分的机器代码使之跳转至getShell函数(其中getShell等函数地址也通过反汇编查询)
分布思路
反汇编查询相关指令行
- 【2】
- 【3】
- 【1】
- 【4】
- EIP:80484ba +d7ffffff= 80484ba-0x29正好是8048491(foo首地址)这个值
通过vi编辑器修改相应部分代码
- 【5】
- 退出编辑前记得将16进制转换为原格式 :%!xxd -r
执行程序,比较修改前后效果
简单BOF注入
操作思路
总思路
- 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
分布思路
手动测试缓冲区长度
用getshell的地址覆盖返回地址
- 通过构造一个含16进制getshell地址的字符串文件,将字符串注入缓冲区
- (地址由反汇编查看)
- 【c】
注入shellcode
操作思路
总思路
- 注入一个shellcode并运行这段shellcode。
分布思路
准备一个shellcode
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\
修改设置
构造payload
- 结构:anything+retaddr+nops+shellcode
- 首先输入攻击命令
- 找到进程号32549
- 【e】
- 用gdb进行调试,找到注入buf的内存地址
- 【f】
- 【g】
- 地址为0xffffd2f0
- 将地址改为0xffffd2f0
- 【h】
- 攻击成功
- 【i】