20145226夏艺华《网络对抗》第一次实验拓展:shellcode注入+return-to-libc

shellcode注入实践

编写shellcode

编写shellcode已经在之前的实验中搞定啦,这次直接用成品咯~

准备工作,设置环境

基础——Bof攻击防御技术

· 从防止注入的角度来看:在编译时,编译器在每次函数调用前后都加入一定的代码,用来设置和检测堆栈上设置的特定数字,以确认是否有bof攻击发生。

· GCC中的编译器有堆栈保护技术(结合CPU的页面管理机制,通过DEP/NX用来将堆栈内存区设置为不可执行。这样即使是注入的shellcode到堆栈上,也执行不了。)

· 此时就需要手动设置环境,如下所示:

apt-cache search execstack
apt-get install execstack
execstack --help
execstack -s pwn1 //设置堆栈可执行
execstack -q pwn1 //查询文件的堆栈是否可执行

构造要注入的payload

· 在Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcodenop+shellcode+retaddr``。因为retaddr在缓冲区的位置是固定的,shellcode可能在它前面或者后面,或者说缓冲区小就把shellcode放后面,缓冲区大就把shellcode放前面。 · 我们还是尝试对于pwn1用nop+shellcode+retaddr`的方法

payload结构为nop+shellcode+retaddr

· 编写payload

需要注意的是:千万不能以\x0a作为结束。因为\x0a相当于回车,如果回车了下面的操作就gg了。

· 打开一个新终端(终端2),将payload注入到pwn1中。注意一定不能多敲回车。

· 在终端中输入(cat input_shellcode;cat) | ./pwn1

· 保持终端2中程序的运行状态。

终端1中查询pwn1进程的UID

gdb调试,进入对应UID端口



反汇编,设置断点

ps:continue执行的时候,在终端2敲一下回车,终端1中的continue就会暂停在断点处了~

往上查询找到shellcode,同时找到要覆盖的地址





要覆盖的地址(返回地址)是0xffffd32c

重新构造payload

成功啦!

return-to-libc实验

首先需要配置32位linux环境

sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386
sudo apt-get install lib32readline-gplv2-dev

这里简直有毒[smile],我安装的时候总是报错,上网查了一下需要先apt-get update还有apt-get upgrade一下,然后吧我就开始在终端搞了,然后吧我嫌弃网速太慢就开了个热点,当时瞟了一眼看到的是17.1M,觉得没啥嘛反正月底了。然后[smile],我就收到了流量超量提醒,用了6G,手动再见。

这个故事告诉我们,开热点做实验很容易手滑。

添加新用户

· 因为最后的是要通过看“是否取得root权限”来判断成功与否的,所以攻击对象不能是root用户,要创建一个新用户。

设置实验背景

· 进入32位环境,关闭地址随机化,设置zsh程序代替/bin/bash

· 在/tmp文件夹下编写漏洞程序retlib

· 在root用户下编译,关闭栈保护机制,并设置SET-UID

在/tmp文件夹下编写getenvaddr和exploit

· 用来读取环境变量的代码getenvaddr:



上图手滑了好几处,正确的代码应该是长这样的:

· 用来攻击的代码:exploit



· 也是在root用户下编译的

获取地址并修改exploit

· 获取BIN_SH地址

· 进入gdb设置断点,调试运行获取system和exit地址

· 将上述三个地址修改入exploit.c文件

最后~攻击,over

先运行exploit再运行retlib就可以可获得root权限,成功!

实验感想

心好累,我的流量一去不复返了。操作中很多细节的地方需要注意,比如多一个少一个回车的问题,就很容易有影响。我第一次做的时候因为直接在pwn1的文件上做了,但是又从头来过,所以就很尴尬的是,pwn1文件已经被修改了,所以我从码云上下载了新的pwn1文件,但是权限有问题,需要先chmod u+x pwn1改一下它的权限之后才可以继续往下做,之前拷贝的老师的虚拟机应该是已经更改过权限的~这个故事告诉我们,做实验的时候还是先拷贝一下比较好,或者来个虚拟机快照之类的也不错~谁知道哪天就崩了呢。

20145226夏艺华《网络对抗》第一次实验拓展:shellcode注入+return-to-libc的更多相关文章

  1. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

  2. 20145226夏艺华 网络对抗技术EXP8 WEB基础实践

    20145226夏艺华 网络对抗技术EXP8 WEB基础实践 实验问题回答 1.什么是表单? 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CG ...

  3. 20145226夏艺华 网络对抗技术 EXP7 网络欺诈技术防范

    20145226夏艺华 网络对抗技术 EXP7 网络欺诈技术防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. · 简单应用SET工具建立冒名网站 · ett ...

  4. 20145226夏艺华 网络对抗技术EXP4 恶意代码分析

    20145226夏艺华 网络对抗技术EXP4 恶意代码分析(未完成版) 回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作 ...

  5. 20145226夏艺华 《Java程序设计》实验报告四

    实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理机制 Andro ...

  6. 20145226夏艺华 Exp6 信息搜集与漏洞扫描

    20145226夏艺华 Exp6 信息搜集与漏洞扫描 基础问题回答 哪些组织负责DNS,IP的管理? · 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理 ...

  7. 网络对抗第一次实验——PC平台逆向破解(5)M

    网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...

  8. 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击

    20145203盖泽双<网络对抗技术>拓展:注入:shellcode及return-into-libc攻击 一.注入:shellcode 1.编写一段用于获取Shellcode的C语言代码 ...

  9. 20145307陈俊达《网络对抗》shellcode注入&return to libc

    20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...

随机推荐

  1. SVN安装操作流程

    SVN 安装操作流程 1.服务端安装流程 1.1 双击打开svn-server安装包 1.2 点击Next 1.3 勾选上“I accert the terms in the License Agre ...

  2. (fields.E130) DecimalFields must define a 'decimal_places' attribute.

    DecimalField类型:固定精度的十进制数,一般用来存金额相关的数据.额外的参数包括DecimalField.max_digits(整个数字的长度)和DecimalField.decimal_p ...

  3. Thread-Specific-Storage for C/C++

    引用出处:https://www.cse.wustl.edu/~schmidt/PDF/TSS-pattern.pdf 摘要: 理论上多线程会提高程序性能,但实际上,由于在获取和释放锁的开销,多线程经 ...

  4. java中数据类型的范围

    前言:最近:本菜鸡在准备pat,可以每次遇到数据类型的时候都得去查找范围,因此本着学习的目的,来总结一下java中的数据类型. 因此我用mindManager做了一个思维图

  5. Andorid进阶7—— Ant自动编译打包&发布 android项目

    http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...

  6. 【题解】洛谷P1032 [NOIP2002TG]字串变换(BFS+字符串)

    洛谷P1032:https://www.luogu.org/problemnew/show/P1032 思路 初看题目觉得挺简单的一道题 但是仔细想了一下发现实现代码挺麻烦的 而且2002年的毒瘤输入 ...

  7. 【题解】洛谷P1283 平板涂色(搜索+暴力)

    思路 看到n<16 整个坐标<100 肯定想到暴力啊 蒟蒻来一发最简单易懂的题解(因为不会DP哈 首先我们用map数组来存坐标图 注意前面的坐标需要加1 因为输入的是坐标 而我们需要的是格 ...

  8. Keil开发的ARM程序main函数之前的汇编分析

    Keil开发的ARM程序main函数之前的汇编分析 ——BIN文件中RW段的数据移动 系统平台: STM32系列STM32F103ZE,512KB内部FLASH,64KB片内存储; FLASH地址范围 ...

  9. android软件开发之获取本地音乐属性

    歌曲的名称 :MediaStore.Audio.Media.TITLString tilte = cursor.getString(cursor.getColumnIndexOrThrow(Media ...

  10. 生产环境MySQL数据库集群MHA上线实施方案

    生产环境MySQL数据库集群MHA上线实施方案 一.不停库操作 1.在所有节点安装MHAnode所需的perl模块(需要有安装epel源) yum install perl-DBD-MySQL -y ...