zoukankan      html  css  js  c++  java
  • #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践

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

    实践目的:注入shellcode

    准备一段shellcode代码

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

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

    实验步骤

    1.写一段shellcode代码

    2.设置环境

    Bof攻击防御技术

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

    • 安装execstack

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

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

    • 构造payload,采用nop+shellcode+retaddr方式(x4x3x2x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

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

    • 再打开一个terminal,用GDB调试5238pwn1sc进程,

    • 找到进程1820

    • 用attach追踪

    (在次步骤切记另一个注入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代表回车,我们继续往下看。接下来要做的,就是确定x4x3x2x1到底该填什么。
    • 还有一点不太明白就是,我第一次尝试的时候,用同一台电脑但是ffffd31c的位置是00000102,因此位置fffd31a才是shellcode位置如图

      但是最后执行却报错,说操作不合法不是很明白原因,还在解决中。
  • 相关阅读:
    demo_14 更多卡片视图实现
    demo_13 基础卡片视图实现
    demo_10_06 云数据库聚合_lookup_02
    demo_10_06 云数据库聚合_lookup_01
    demo_12 子组件选项卡切换及事件传递
    demo_11 封装数据请求
    demo_10_05 云数据库聚合_limit
    demo_10_04 云数据库聚合_group_02
    sed 过滤和替换文本函数
    curl 参数
  • 原文地址:https://www.cnblogs.com/20145238jym/p/6532924.html
Copyright © 2011-2022 走看看