20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

实验原理

  • 关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫病毒的核心,一般可以获取权限。我们将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出漏洞,覆盖成为指向ShellCode的地址。

  • Linux中两种基本构造攻击buf:retaddr+nop+shellcodenop+shellcode+retaddr,缓冲区小就把shellcode放后面,若缓冲区较大把缓冲区放置前边。

实验目的与要求

  • 本次实践对象是一个名为pwn1的可执行文件。

  • 对可执行文件pwn1进行操作,注入并运行任意代码。

实验过程及结果

  • 写一段shellcode代码(本次实验采用老师的代码)
  • 设置环境,手动安装execstack
  • 拷贝并运行pwn1文件确保可以使用

884698-20170312211108748-876735854.png

  • 设置堆栈可执行
  • 关闭地址随机化,more/proc/sys/kernel/randomizevaspace用来查询地址随机化是否开启或者关闭的状态,2表示开启,0表示关闭。

884698-20170312211123982-228134009.png

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

884698-20170312211147998-754887993.png

  • 打开一个新的terminal,注入攻击注入攻击buf(注意回车要在设置断点后进行,否则无法确认进程号,并且要在gdb执行c前回车

884698-20170312211203764-540297336.png

-用GDB调试20145335hh1进程,找到进程3400,用attach追踪

884698-20170312211233014-1669937050.png

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

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

884698-20170312211252623-1931278512.png

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

  • 退出gdb,按照anything+retaddr+nops+shellcode修改input_shellcode如下打印字母'H',完成实验。
    884698-20170312211340420-1984110718.png

心得体会

本次实验老师在课堂上也有讲到过,但是在自己实验过程中还是遇到问题,比如在最后一步输入命令的时候遇到了问题,在命令perl -e 'print "H" x 32;print "\x20\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode和命令(cat input_shellcode;cat) | ./20145335hh1时候两个shellcode输入错误,导致修改的是一段代码,注入又是另一段代码导致最后结果出现了问题,及时更正了过来完成了实验

转载于:https://www.cnblogs.com/20145335hh/p/6539368.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转Android之加速度传感器的使用,模仿微信摇一摇

Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果。 OK ,废话不多说,我们就先来看看效果图吧: 当我摇动手机的时候这里的动画效果…

Java两种设计模式_23种设计模式(11)java策略模式

23种设计模式第四篇:java策略模式定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图:策略模式是对算法的封装,把一系列的算法分别封装到对应的类中&#xf…

JAXB自定义绑定– Java.util.Date / Spring 3序列化

JaxB可以处理Java.util.Date序列化,但是需要以下格式: “ yyyy-MM-ddTHH:mm:ss ”。 如果需要将日期对象格式化为另一种格式怎么办? 我有同样的问题时,我正在同春MVC 3和Jackson JSON处理器 ,最…

双足机器人简单步态生成

让机器人行走最简单的方法是先得到一组步态曲线,即腿部每个关节随时间运动的角度值。可以在ADAMS或3D Max、Blender等软件中建立好机构/骨骼模型,设计出脚踝和髋关节的运动曲线,然后进行逆运动学解算,测量每个关节在运动过程中的转…

重新访问了访客模式

访客模式是面向对象设计中最被高估但又被低估的模式之一。 高估了它,因为它常常被选择得太快( 可能是由建筑宇航员选择的 ),然后以错误的方式添加时会膨胀本来非常简单的设计。 如果您不遵循教科书示例,那么它可能会非…

ASP.NET—013:实现带控件的弹出层(弹出框)

http://blog.csdn.net/yysyangyangyangshan/article/details/38458169 在页面中用到弹出新页面的情况比较多的,一般来说都是使用JS方法showModalDialog("新页面相对路径?参数1&参数2",window,"新页面样式");然后会新弹出一个模态的page页。…

java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...

一、权限计算相关分析1.如何存储权限首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理。怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权限,那么如果…

GWT和HTML5 Canvas演示

这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形,仅用几行代码就得出了这样的内容: 码: public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";static final St…

Solr管理界面详解

转载于:https://www.cnblogs.com/gslblog/p/6553813.html

一个实用的却被忽略的命名空间:Microsoft.VisualBasic:

当你看到这个命名空间的时候,别因为是vb的东西就匆忙关掉网页,那将会是您的损失,此命名空间中的资源最初目的是为了简化vb.net开发而创建的,所以microsoft.visualbasic并不属于system命名空间,而是独立存在的。虽然是为…

Linux基础之命令练习Day2-useradd(mod,del),groupadd(mod,del),chmod,chown,

作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码“123” 5) 查看用户密码配置文件的最后一行 6) 将nat…

动态表单,JSF世界早已等待

新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常,如果知道行/列的数量,元素的位置等,则可以通过h:panelGrid或p:panelGrid来构建非常简单的表单。 对于静态表单,这是正确的。 但是,如…

C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)

定时器事件代码 static void Main(string[] args) {Method();#region 定时器事件 Timer aTimer new Timer();aTimer.Elapsed new ElapsedEventHandler(TimedEvent);aTimer.Interval seconds * 1000; //配置文件中配置的秒数aTimer.Enabled true;#endregionstring strLi…

Vmware安装Centos NAT方式设置静态IP

【Vmware中在搭建集群环境等,DHCP自动获取IP方式不方便,为了固定IP减少频繁更改配置信息,建议使用静态IP来配置,网络连接主要有三种方式 1.nat 2.桥接,3主机模式 ,在这里主要介NAT方式, 为什么使…

1 TB /节点时快速,可预测且高度可用

世界正每秒从移动设备,Web和各种小工具向应用程序推送大量数据。 如今,更多的应用程序必须处理此数据。 为了保持性能,这些应用程序需要快速访问数据层。 在过去的几年中,RAM价格下降了,我们现在可以便宜得多地获得具有…

java jni 内存_Android开发之JNI内存模型

Java 与JNI 内存管理是怎样的想要弄清楚Java与JNI的内存管理的关系,首先要弄清楚JVM的内存模型JVM内存模型.png其中本地方法栈就是运行时调用native 方法的数据保存区。本地方法栈的大小可以设置成固定的或者是动态扩展。Java中的内存泄露JAVA 编程中的内存泄漏&…

04 linux用户群组和权限

作业一: 1)新建用户natasha,uid为1000,gid为555,备注信息为“master” 2)修改natasha用户的家目录为/Natasha 3)查看用户信息配置文件的最后一行 4)为natasha用户设置密码“123” 5)查看用户密码配置文件的最后一行 6)将natasha用…

基于 CoreText 实现的高性能 UITableView

引起UITableView卡顿比较常见的原因有cell的层级过多、cell中有触发离屏渲染的代码(譬如:cornerRadius、maskToBounds 同时使用)、像素是否对齐、是否使用UITableView自动计算cell高度的方法等。本文将从cell层级出发,以一个仿朋友…

Web Magic 总体架构

1.2 总体架构 WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。 而S…

SpringMVC搭建+实例

想做一点自己喜欢的东西,研究了一下springMVC,所以就自己搭建一个小demo,可供大家吐槽。 先建一个WEB工程,这个相信大家都会,这里不在多说。去网上下载spring jar包,然后在WEB-INF下新建一个lib文件,将下载的jar包放进…