20145217《信网络对抗》逆向与BOF基础实践
2017-02-28 21:05
197 查看
20145217《信网络对抗》逆向与BOF基础实践
内容:
一、简单机器指令,汇编语言
1.'objdump -d xxx|more'反汇编命令查看机器代码,'cat'显示文件内容,'xxd'16进制显示,'cp'复制文件,'mkdir'新建文件夹等等2.栈用于实现函数或过程调用,相关寄存器'BP、FP、SP',相关操作'PUSH'压栈、'POP'弹栈
3.函数调用过程的三个步骤:'prologue'保存当前的栈基址(ebp);'call': 调用参数和返回地址('eip')压栈,跳转到函数入口;'return': 恢复调用者原有栈
4.部分指令机器码
①NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)
②JNE:条件转移指令,如果不相等则跳转。(机器码:75)
③JE:条件转移指令,如果相等则跳转。(机器码:74)
④JMP:无条件转移指令。段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:FF)段间直接(远)转移Jmp far(机器码:EA)
⑤CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
二、缓冲区溢出攻击
当调用函数时,'Call'指令会将返回地址('Call'指令下一条指令地址)压入栈,'Ret'指令会把压栈的返回地址弹给EIP栈溢出攻击的原理
通过缓冲区溢出修改栈中的返回地址,当函数调用返回,EIP获得被修改后的返回地址,并执行'Shellcode'
三、两个实验
1.直接修改机器指令,改变程序执行流程(1)反汇编查看'pwn1'的机器代码
(2)'main'函数,注意'call'指令行
(3)'getshell'函数的地址
(4)计算偏移量
(5)'vim'编辑器打开
(6)转成16进制
(7)查找命令段
(8)修改,insert可以切换输入模式
(9)改好了以后编码模式再还原回去
(10)运行下结果如下图
2.'Linux'栈溢出/'Shellcode'
(1)gdb调试pwn2,测试溢出长度
(2)用脚本语言建立一个文件,用'cat'显示文件内容,效果如下
相关文章推荐
- 《网络对抗》——逆向及Bof基础实践
- 20145320《网络对抗》逆向及Bof基础实践
- 逆向及Bof基础实践
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
- 20145328 《网络对抗技术》逆向及Bof基础实践
- 逆向及BOF基础实践
- 20145232韩文浩《网络对抗》逆向及BOF基础实践
- 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践
- 20145334赵文豪《网络对抗》-逆向及Bof基础实践
- 20145210姚思羽《网络对抗技术》逆向及Bof基础实践
- 20145308 《网络对抗》 逆向及BOF基础实践 学习总结
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
- 20145330 《网络对抗》逆向及BOF基础实践
- 20145335郝昊《网络对抗》逆向及Bof基础实践
- 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础
- 20145211《网络对抗》逆向及BOF基础实践
- 20145216《网络对抗》逆向及BOF基础实践
- 20145327 《网络对抗》逆向及BOF基础实践
- 20145214《网络攻防》逆向及Bof基础实践
- 20145230熊佳炜《逆向及BOF基础实践》