20155204 王昊《网络对抗技术》EXP1 PC平台逆向破解
(一)实验内容
1、掌握NOP、JNE、JE、JMP、CMP汇编指令的机器码
- 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指令执行后,将对标志寄存器产生影响。其余相关指令经过识别这些被影响的标志寄存器位来得知比较结果。
2、掌握反汇编与十六进制编程器
反汇编指令:objdump -d xxx
将显示模式切换为16进制模式:%!xxd
转换16进制为原格式:%!xxd -rhtml
3、正确修改机器指令改变程序执行流程
主要流程为:反汇编-->16进制查看文件修改foo函数返回地址为shellcode的地址,从而达成目的。
shell
4、能正确构造payload进行bof攻击
在完成构造一个攻击输入字符串,覆盖返回地址,触发getShell函数
的基础上,
编程
要构造一个能将shellcode地址注入foo后的返回地址寄存器的字符串。为了找到这个返回地址寄存器,须要:关闭地址随机化-->将字符串中返回地址设为特定数字-->在eip寄存器中找到foo后返回地址-->将字符串的返回地址改成上一步的那个地址-->完成攻击

网络
(二)实验总结感悟
1、实验参考
2、感悟
实验感受难度适中,接触到了漏洞与攻击,作很简单,理解起来花了一些功夫,可能还有点不到位。可是组长以及其余同窗的博客给予的帮助仍是很大的,不只能解决操做问题,对比着不一样同窗的博客也能更好的去理解实验。函数