20155306 白皎 免考实践总结——0day漏洞
本次免考实践提纲及链接
第一部分 基础知识
1.1 0day漏洞概述
1.2二进制文件概述
1.3 必备工具
1.4 crack实验
第二部分 漏洞利用
2.1.1 系统栈工作原理
2.1.2 修改邻接变量
2.1.3 修改函数返回地址
2.1.4 代码植入
2.2.1 DEP机制的保护原理
2.2.2 linux下利用Ret2Lib绕过DEP
2.2.3 windows下利用Ret2Libc绕过DEP
2.3.1 GS安全编译选项的保护原理
2.3.2 利用未被保护的内存突破GS
2.3.3 覆盖虚函数突破GS
2.3.4 攻击异常处理突破GS
2.3.5 同时替换栈中和.data中的Cookie突破GS
3.1 Ubuntu16.04 (CVE-2017-16995)
3.2 Flash 0day(CVE-2018-4878)
总结与体会
一、 总结
终于历经辛苦完成了本次免考实践,可以安心复习其他课程了哈哈。回顾这次免考实践,刚开始选择0day漏洞这个课题,起初是因为在微信群里看到老师发了一个2018年5月的Flash 0day漏洞的相关链接,经了解后,便萌生了想要从头自学0day漏洞相关原理知识的想法。通过在图书馆借阅相关书籍、以及从网上购买书籍和查阅资料,我大概确定了自己的免考思路,如上述目录所列的内容。
首先,我学习了对0day漏洞环境的搭建,以及相关工具的熟悉,并掌握了很多必备的工具。
其次,我选择学习了0day漏洞初级、高级的原理并进行实践。其中,第一部分,主要介绍了学习0day漏洞需要掌握应用了四种工具以及关于PE文件等的基础知识,主要收获是学习了通过查看内存地址,寄存器的值以及栈中的数值变化来判断出程序运行目前的状态。第二部分,学习了漏洞原理之栈溢出利用,目标代码嵌套到shellcode中,通过溢出覆盖地址的方式,替换掉本来的地址,而是将地址指向我想要执行的shellcode,以达到目的。除此之外,成功利用系统函数system()实现了在Linux下做Ret2Lib绕过DEP,并掌握了在Windows下做Ret2Lib绕过DEP的各种思路方法。在最后模块,我主要是实践如何突破GS,GS是微软提供的一种编译保护选项,主要目的是为了增加栈溢出的难度。在这一部分的实践过程中我尝试了许多方法,找了很多教程,但是网上相关的内容并不多,因此遇到了很多问题,感受到自己的知识还有很大差距。比如,在老师的帮助下,我才了解在程序里设断点,并且把程序改成release版本是会报错的,断点必须在OD中设置,也正是因为这个问题让我调试了很久,浪费了很多时间。在此,还是要非常感谢老师!
最后,我原本的初心是通过这次免考所学到的知识可以去复现并分析一个近两年的漏洞。但是我发现仅仅通过这次免考实践我所掌握的知识还是非常浅薄的,只是最原始的知识层面,因此主要完成了复现近两年的两个0day漏洞。希望以后在时间充裕的情况下,还可以进一步深入学习。
二、 体会
总之,本次实践的整体过程难免遇到了一些问题,进行了一些调整,但最终这次免考实践我最大的感触就如Krashen的“i+1”理论,它既没有像“i+0”让我在原有的知识层面上毫无所获,也没有像“i+N(N远大于1)”让我丧失对获得新鲜知识的兴趣甚至产生畏惧感。一个人单独完成这项任务给了我很大的压力,但也让我能够转化为动力,踏踏实实沉下心来去研究、去思考,从而让我收获颇丰。
我另一点印象最深的体会就是在向老师请教的时候,老师说的那句话,一定要做得很开心、很享受,知道自己在做什么。虽然说实话最开始我们都是怀抱一颗仅仅是想要获得好成绩的心选择免考哈哈,但是在这个过程中,一次次实践的成功让我获得巨大的成就感,让我真正地用心体会到了“兴趣才是最好的老师”这个简单质朴却又极其经典的道理。免考实践就像是整个网络攻防课程的缩影,如果我们只是被动地疲于应付老师每次要求的实践任务,便没有任何意义。而只有主动地积极学习,享受学习带来的乐趣,才能在整个学习的过程在收获幸福感、获得感!
20155306 白皎 免考实践总结——0day漏洞的更多相关文章
- 20155306 白皎 0day漏洞——基础知识
20155306 白皎 0day漏洞--(第一篇)基础知识 写在前面: 本次免考实践方向是0day漏洞,以博客的形式记录了我的学习实践过程.第一篇博客主要围绕什么是0day漏洞以及一些以后学习中需要的 ...
- 20155306 白皎 0day漏洞——漏洞利用原理之GS
20155306 白皎 0day漏洞--漏洞利用原理之GS 一.GS安全编译选项的保护原理 1.1 GS的提出 在第二篇博客(栈溢出利用)中,我们可以通过覆盖函数的返回地址来进行攻击,面对这个重灾区, ...
- 20155306 白皎 0day漏洞——漏洞利用原理之栈溢出利用
20155306 白皎 0day漏洞--漏洞利用原理之栈溢出利用 一.系统栈的工作原理 1.1内存的用途 根据不同的操作系统,一个进程可能被分配到不同的内存区域去执行.但是不管什么样的操作系统.什么样 ...
- 20155306 白皎 0day漏洞——漏洞利用原理之DEP
20155306 白皎 0day漏洞--漏洞利用原理之DEP 一.DEP机制的保护原理 1.为什么出现DEP? 溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计 ...
- 20155306白皎 《网络对抗》 Exp9 Web安全基础实践
20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...
- 20155306 白皎 《网络攻防》 Exp2 后门原理与实践
20155306 白皎 <网络攻防> Exp2 后门原理与实践 一.实践基础 后门程序又称特洛伊木马,其用途在于潜伏在电脑中,从事搜集信息或便于黑客进入的动作.后程序和电脑病毒最大的差别, ...
- 20155306 白皎 《网络攻防》Exp1 PC平台逆向破解——逆向与Bof基础
20155306 白皎 <网络攻防>Exp1 PC平台逆向破解--逆向与Bof基础 实践相关说明 1.1 实践目标 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. ...
- 20155306 白皎 《网络攻防》 EXP8 Web基础
20155306 白皎 <网络攻防> EXP8 Web基础 一.问题回答 - 什么是表单 表单:一般用来收集用户的信息和反馈意见 表单包括两个部分:一部分是HTML源代码用于描述表单(例如 ...
- 20155306 白皎 《网络攻防》 EXP7 网络欺诈技术防范
20155306 白皎 <网络攻防> EXP7 网络欺诈技术防范 问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击以及连接公众场所的共享wifi (2)在日常 ...
随机推荐
- 活字格Web应用平台学习笔记4 - 添加记录
今天继续学习活字格基础教程,目标是创建一个页面,增加记录. 开始之前,系统会自动把上一次的工程文件加载进来. 这是做好后的样子. 我点添加员工的超链接: 先后加了2条员工的信息进来. 不错,设计界面是 ...
- Android Vsync 原理浅析
Preface Android中,Client测量和计算布局,SurfaceFlienger(server)用来渲染绘制界面,client和server的是通过匿名共享内存(SharedClient) ...
- 几个python函数
迭代器 fun函数 过滤作用 s=['a', 'b', 'c'] def fun1(s): if s!='a': return s ret filter(fun1, str) print(ret) ...
- SQL2005中的事务与锁定(九)-(1)- 转载
------------------------------------------------------------------------ -- Author : HappyFlyStone - ...
- 迁移MSSQL实例的所有login(包含密码)
迁移数据库的时候肯定会涉及到login的迁移(包含数据库除外). 而一般我们迁移login的时候,可能会使用在某个login上右键生成脚本这样的做法.但是这样生成的脚本不能把密码也生成出来. 而且你只 ...
- scaffold-dbcontext 命令使用说明
工具的scaffold-dbcontext(数据库上下文脚手架)指令来生成models和context. 指令详细介绍: Scaffold-DbContext [-Connection] <St ...
- Android高级_第三方下载工具Volley
Volley下载主要应用于下载文本数据和图片数据两个方向,下面分别介绍: 一.使用Volley开启下载,首先要做的是导包和添加权限: (1)在build.gradle文件中导入依赖包:compile ...
- Mysql学习第二天
Mysql语句执行 用户登录与管理 mysql -uroot -p -hlocalhost test # 指定登录test数据库 mysql -uroot -p -hlocalhost company ...
- PTA-B 1039 到底买不买 解题思路记录
#include <cstdio> #include <string> #include <iostream> using namespace std; int m ...
- Windows Server 2008远程桌面端口更改方法
win2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口.本文以改为端口为25608商品为例,讲解一下具体操作过程. ...