#20145238荆玉茗《网络对抗》-逆向及Bof进阶实践

20145238荆玉茗《网络对抗》-逆向及Bof进阶实践

实践目的:注入shellcode

准备一段shellcode代码

Shellcode实际是一段代码(也能够是填充数据),是用来发送到服务器利用特定漏洞的代码,通常能够获取权限。另外,Shellcode通常是做为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它天然就会和漏洞联想在一块儿shell

Linux中两种基本构造攻击buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr,缓冲区小就就把shellcode放后边,否则就放前边。服务器

实验步骤

1.写一段shellcode代码

2.设置环境

Bof攻击防护技术网络

  • 须要手动设置环境使注入的shellcode到堆栈上可执行。
  • 安装execstack

    dom

  • 设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上能够执行
    spa

  • 关闭地址随机化,more /proc/sys/kernel/randomizevaspace用来查询地址随机化是开启状态仍是关闭状态,2表示开启,0表示关闭。
    3d

  • 构造payload,采用nop+shellcode+retaddr方式(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,须要将它改成shellcode的地址)
    调试

  • 新打开一个terminal,注入攻击buf
    code

  • 再打开一个terminal,用GDB调试5238pwn1sc进程,
  • 找到进程1820
  • 用attach追踪
    blog

(在次步骤切记另外一个注入buf的进程不能按回车,否则./5238pwn1sc的进程不能出来)进程

  • 启动gdb调试进程,设置断点,查看注入buf的内存地址

此时发现0x080484ae ret 就跳到咱们覆盖的retaddr那个地方了

  • 设置断点后,在另外一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就紧挨着这个地址,加四字节为0xffffd320

  • 退出gdb,按照anything+retaddr+nops+shellcode修改input_shellcode以下
    很幸运,get it~

其余

  • 不少人的kali不能连网,缘由是在开启虚拟机那里有一个网络适配器,将其选项网桥改成net便可。
  • 构造payload最后一个字符千万不能是\x0a。否则下面的操做就作不了了,\x0a表明回车,咱们继续往下看。接下来要作的,就是肯定\x4\x3\x2\x1到底该填什么。
  • 还有一点不太明白就是,我第一次尝试的时候,用同一台电脑可是ffffd31c的位置是00000102,所以位置fffd31a才是shellcode位置如图

    可是最后执行却报错,说操做不合法不是很明白缘由,还在解决中。
相关文章
相关标签/搜索