码迷,mamicode.com
首页 > 其他好文 > 详细

20155234 昝昕明 《网络对抗技术》实验一 PC平台逆向破解

时间:2018-03-18 21:36:55      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:入侵   跳转   info   计时   src   文本搜索   工具   attach   com   

实践内容:

  • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
  • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
  • 注入一个自己制作的shellcode并运行这段shellcode
  • 三块内容也实际包含了现实情况下bof攻击的三种方法:
  • 运行原本不可访问的代码片段
  • 强行修改程序执行流
  • 以及注入运行任意代码

    实践所涉及指令

    汇编中的指令:
    call:使程序跳转到某个地址并开始执行,被调用的过程位于当前代码段内。它的机器指令是一个16位的有符号数,也就是说被调用的过程的首地址必须位于距离当前call指令-32768~+32767字节的地方。在指令执行的时候,处理器先把IP的值压栈,然后根据操作数调整IP的值(IP=IP+操作数+3),这直接导致处理器的执行流转移到目标位置处。
    ret:近返回指令。执行的时候,处理器从栈中弹出一个字到IP中。
    NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)
    JNE:条件转移指令,如果不相等则跳转。(机器码:75)
    JE:条件转移指令,如果相等则跳转。(机器码:74)
    JMP:无条件转移指令。段内直接短转Jmp
    CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
    gdb中的指令:
    attach:直接在gdb中把一个正在运行的进程连接到gdb中,以便于进行动态调试;
    disassemble:命令用于反汇编,它可被用来查看当前执行时的源代码的机器码,其实际上只是把目前内存中的指令dump出来。
    linux中的指令:
    ps:用来查看进程
    grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    prel: Perl是一门解释型语言,不需要预编译,可以在命令行上直接使用

    实践一:直接修改程序机器指令,改变程序执行流程

    用objdump -d命令反汇编。
    技术分享图片
    技术分享图片
    用vim修改文件将d7改为c3后运行
    技术分享图片

    实践二:通过构造输入参数,造成BOF攻击,改变程序执行流

    技术分享图片
    技术分享图片

    实践三:注入Shellcode并执行

    技术分享图片
    技术分享图片
    技术分享图片

    实验收获与感想

    这次实验总体来说比较简单,跟着老师的实验指导和组长的实验博客很顺利地就做完了。这是第一次接触攻防一类的实验,成功做完之后还是很有成就感的。

    什么是漏洞?漏洞有什么危害?

  • 什么是漏洞
    我认为漏洞就是安全缺陷,设计人员在设计时故意留下或者因为疏忽留下的弱点。
  • 漏洞有什么危害
    这些安全缺陷会被技术高低不等的入侵者所利用,从而达到控制目标主机或造成一些更具破坏性的目的。

20155234 昝昕明 《网络对抗技术》实验一 PC平台逆向破解

标签:入侵   跳转   info   计时   src   文本搜索   工具   attach   com   

原文地址:https://www.cnblogs.com/zxm20/p/8597400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!