20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

时间:2023-01-14 23:49:52

20145311《网络对抗技术》逆向及BOF进阶实践

学习目的

  • shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode 的地址。
  • Return-to-libc 攻击实验:即使栈有不可执行的能力,无法将shellcode放入堆栈中运行,但我们却可以直接让漏洞程序调转到现存的代码来实现我们的攻击。(本次实验所用的是已经载入内存的 libc 库中的 system()函数等)

基础知识

  • ps 命令:用于查看进程号,结合参数管道
  • (gdb) disassemble foo: 反汇编一段内存地址
  • (gdb) x/16x : 使用x命令(examine的简写)来查看内存地址中的值。
    •   x命令的语法:x/<n/f/u>

实践过程

shellcode的注入

最开始需要设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

关闭地址随机化,避免每次执行分配的内存地址不同

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

采取anything+retaddr+nop+shellcode来构造payload

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

找到进程号进行gbb调试

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践先不要回车,等待后面的调试

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

在ret处设置断点,接着运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,并由此分析出返回地址位置的正确性以及shellcode的地址

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

将作为输入的 input_shellcode 处的 “\x1\x2\x3\x4” 换为上面所找到的 shellcode 地址 “\x30\xd3\xff\xff”

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

修改完之后在运行,程序的返回地址就已经被修改成了shellcode的地址,从而执行shellcode获得主机的权限

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

Return-to-libc 攻击实验

进入linux32的环境,将地址随机化关闭,同时使用ln命令,让 /bin/sh 指向另一个shell程序(这里是zsh)(因为原 /bin/bash 有保护措施,即使能调用一个shell,也不能在这个shell中保持root权限)

编写retlib文件并进行编译

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

编写读取环境变量的程序并进行编译

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

编写攻击代码

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

读取环境变量

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

调试攻击程序得到system与exit的地址

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

将攻击程序中的buf换为获得的3个地址

重新编译攻击程序会生成badfile文件,再次运行漏洞程序retlib,可见攻击成功

再次执行便能够成功获取到主机的shell

实验体会

这次实验主要是在开启了堆栈可执行、关闭了地址随机化的条件下去完成的,可见在实际环境中进行攻击时会遇到更多更麻烦的情况在注入shellcode的时候还是遇到一些困难,尤其是如何构造payload,一开始采用的构造方式怎么尝试也没能成功,后来改成了anything+retaddr+nops+shellcode之后顺利成功了,说明自己在理解堆栈这一块还是有点问题,关于bof攻击如何正确将自己的攻击代码覆盖到缓冲区从而执行是非常关键的

20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践的更多相关文章

  1. 20145216史婧瑶《网络对抗》逆向及Bof进阶实践

    20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...

  2. &num;20145238荆玉茗《网络对抗》-逆向及Bof进阶实践

    20145238荆玉茗<网络对抗>-逆向及Bof进阶实践 实践目的:注入shellcode 准备一段shellcode代码 Shellcode实际是一段代码(也可以是填充数据),是用来发送 ...

  3. 《网络对抗》 逆向及Bof进阶实践

    <网络对抗> 逆向及Bof进阶实践 实践目标 注入一个自己制作的shellcode并运行这段shellcode: 实践步骤 准备工作 root@5224:~# apt-get instal ...

  4. 20145304 网络对抗技术 逆向与Bof基础

    20145304 网络对抗技术 逆向与Bof基础 实践目标 学习以下两种方法,运行正常情况下不会被运行的代码: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的 ...

  5. 20145317 网络对抗技术 逆向与Bof基础

    20145317 网络对抗技术 逆向与Bof基础 实践要求 1. 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 2. 掌握反汇编与十六进制编程器 3. 能正确修改机器指令改变程序执行流程 ...

  6. 20145312《网络对抗》 逆向及Bof基础实践

    20145312 <网络对抗> 逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...

  7. 20145308 《网络对抗》 逆向及BOF基础实践 学习总结

    20145308 <网络对抗> 逆向及BOF基础实践 学习总结 实践目的 通过两种方法,实现程序能够运行原本并不会被运行的代码 实践原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串 ...

  8. 20145206邹京儒《网络对抗》逆向及Bof基础实践

    20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...

  9. 20145216《网络对抗》逆向及BOF基础实践

    20145216<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函 ...

  10. 20145327 《网络对抗》逆向及BOF基础实践

    20145327 <网络对抗>逆向及BOF基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

随机推荐

  1. strcpy函数在VS2015无法使用的问题

    一:原因:一般认为是vs准备弃用strcpy的,安全性较低,所以微软提供了strcpy_s来代替 然而,strcpy_s并没有strcpy好用,我们要想继续在VS2015中使用strcpy该怎么办 呢 ...

  2. 关于ios8模拟器不能输入中文问题以及软键盘不弹出问题

    在Xcode菜单栏中   Product->scheme->Edit Scheme->Options->Application Region改为中国,就可以输入中文了, 如果软 ...

  3. jQuery中&dollar;&period;get&lpar;&rpar;、&dollar;&period;post&lpar;&rpar;和&dollar;&period;ajax&lpar;&rpar;

    jQuery.get()方法: $.get(url,data,success(response,status,xhr),dataType) 该函数是简写的 Ajax 函数,等价于: $.ajax({ ...

  4. C&num; AES&comma;AesManaged使用学习

    加密 static byte[] EncryptBytes_Aes(byte[] plainText, byte[] Key, byte[] IV) { // Check arguments. ) t ...

  5. 【面试笔试算法】Program 2&colon;Amusing Digits&lpar;网易游戏笔试题&rpar;

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 网易成立于1997年6月,是中国领先的互联网技术公司.其相继推出了门户网站.在线游戏.电子邮箱.在线教育.电子商务等多种服 ...

  6. 设计模式之Visitor(访问者)(转)

    Visitor定义 作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 在Java中,Visitor模式实际上是分离了collection结构中的 ...

  7. 安装了nodejs后在命令行运行npm报错:Error&colon; Cannot find module &&num;39&semi;internal&sol;util&sol;types&&num;39&semi;

    报错如下图所示: 解决方法:删除目录“C:\Users\wls\AppData\Roaming\npm\node_modules”下的npm文件夹

  8. &period;net图表之ECharts随笔03-热力地图

    基于01和02 要得到如图所示的热力地图(我从NuGet上下载的包没有heatmap.js文件,没法直接搞热力图,只好暂时先搞着地图.后面尽量搞一下),一般要设置四个参数——title.tooltip ...

  9. &lbrack;原&rsqb;linux下将网卡设置为混杂模式

    设置为混杂模式ifconfig eth2 promisc取消设置ifconfig eth2 -promisc ------------------------------------------ 下面 ...

  10. php浮点数比较

    本文实例讲述了PHP中两个float(浮点数)比较方法.分享给大家供大家参考.具体如下: 最近在开发一个合同管理系统的时候,涉及到两个浮点数比较,算是把我郁闷惨了.在N久以前,就不晓得从哪里听来的一个 ...