那些漏洞挖掘高手都是怎么挖漏洞的?

信息收集及漏洞利用--安全(四) 信息收集 收集目标web服务器的网络信息、系统信息、组织信息 网络信息 包括:域名、TCP/UDP的端口、网络协议、防火墙、访问控制策略等 系统信息 包括:系统标识、站点目录、系统架构、路由表、测试/临时文件 组织信息 包括:员工信息、邮箱/电话、公司地址、组织网站、组织背景等 whois信息 收集注册人、电话、邮箱、dns、地址等 whois 信息 whois.chinaz.com , wwww... 阅读详情
前言

说到安全就不能不说漏洞,而说到漏洞就不可避免地会说到三座大山:

漏洞分析 漏洞利用 漏洞挖掘

从个人的感觉上来看,这三者尽管通常水乳交融、相互依赖,但难度是不尽相同的。本文就这三者分别谈谈自己的经验和想法。

在这里插入图片描述

漏洞分析

漏洞分析相对简单,通常公开的漏洞中就有一两句话描述了漏洞的成因,自己拉代码下来看也就能了解个大概。对于一些自己发现的bug,从崩溃日志中一般也能比较轻松地进行复现和调试。尽管有的bug排查起来相对繁琐,但总归是可以一步步减少范围锁定最终目标的。因此,网上对于漏洞分析的文章很多,一方面分析起来有迹可循,另一方面分析的漏洞也不一定是自己的“原创”漏洞,素材来源更加广泛。

漏洞分析虽然简单,却是每个安全研究人员的必经之路。就像练武中的扎马步、站梅花桩一样,是日积月累的基本功。之前研究内核时有段时间热衷于写漏洞分析的文章,后来随着日渐熟练,写文章记录的速度已经远远跟不上分析的进度,所以现在往往懒得动笔了。

基本功必不可少,但扎马步扎得再稳也不表示你能独步武林。有大佬曾经说过,如果他想的话,可以一天写好几篇分析文章还不带重样的。毕竟,漏洞分析的目的是为了学习、吸收、转化,以史为鉴,最终形成自己独到的理解。

漏洞利用

漏洞利用就相对复杂一点,尤其是对于二进制漏洞,成功的利用需要精巧的内存布局,因此需要对程序涉及到的数据结构要相当的了解。而且并不是所有漏洞都能转换为有效利用的,一般比较容易编写利用的漏洞,我们称之为品相好。对于品相不好的漏洞,我更喜欢将其称之为bug。当然也有人认为 bug 至少造成了程序崩溃,所以可以算一个DoS(拒绝服务)漏洞。

当然漏洞能否利用其实也是和人有关。对于复杂的系统,你认为无法利用的漏洞,大佬就能以一种你没想到的方式利用成功。比如安卓CVE-2019-2025(水滴)漏洞,属于Binder中的一个条件竞争,竞争窗口只有几条汇编指令。漏洞品相相当不好,连CVSS给出的可利用分数(Exploitability Score)也只有1.8分,但360的大佬们也通过玩弄调度器进行稳定利用提权了。

因此,关于漏洞利用的文章也就少了很多。一方面处于负责任披露安全问题的考虑,安全研究人员不会给出完整的利用细节,以免脚本小子滥用;另一方面对于公开的利用,你也总不能跟着写一篇文章灌水,毕竟利用思路很多时候是因人而异的,过于雷同就难免有炒冷饭的嫌疑,除非有一些独到的思考补充,或者有新的利用思路。

很多时候漏洞利用的文章看着看着就变成了漏洞利用分析的文章,这也说明了漏洞利用难度颇高,能独立写出原创利用并进行分享的人不多。就我的感觉而言,漏洞利用更像是另一种形式的软件开发,首先通过漏洞构造原语,然后通过原语实现最终的利用程序。

漏洞挖掘

漏洞挖掘可以说是安全研究人员向往的高地之一,不管你分析了多少漏洞,写了多少利用,如果你没有自己挖掘出过原创的漏洞,那你的安全研究生涯就是不完整的。但是漏洞挖掘这事儿并不是确定性的。漏洞分析只要有漏洞肯定能分析清楚,只不过是时间问题;漏洞利用只要不是明显的无法利用,那至少也存在利用成功的可能性。

漏洞挖掘则不然,即便你盯着某个应用使劲挖,也不能保证有结果,说不定对方根本就没有能触发的漏洞。都说世上没有绝对安全的系统,但是相对安全的系统一抓一大把,至少在出问题之前,你是不知道的。
在这里插入图片描述

提升方法

1、收集信息,尽可能的越多越好(主域名、IP段、搜索引擎、GitHub等)。

2、收集好信息后,对收集的信息进行一些扩展,增加信息收集的量(可以用SubDomain工具批量收集厂商域名信息,域名对应IP,数据多了之后,就可以拿来分析域名的真实地址、以及潜在的IP段)。

3、对IP段、子域名等进行大量破解,这里我们要经常收集一些SRC开发常用的端口、以及一些域名的命名习惯(GitHub上面有很多现成的端口,平时收集信息的时候,可以多注意一下)。

4、收集对方的邮箱账号命名习惯(因为好多官方后台都是用内部邮箱账号登录的)

5、一般大厂商主站的漏洞不是很多,挖到漏洞了,也没多少积分,新手遇到这类型站,应该主动绕道,去其他子站看看。

6、逻辑漏洞,这种类型的漏洞非常多,一般各大厂商基本上都存在,有的只是比较隐蔽而已,刚入手的白帽子,有可能觉得这个挖起来比较难,因为这个得对系统有一定的分析了解,不过好的是,这种漏洞一般只要挖洞一个,基本上奖励还是不错的。

7、弱口令、这种漏洞,新入手的白帽子最好提前收集一些弱口令字典,我用的一般是TOP2000。账号收集你可以看他们的邮箱结构,例如:liudehua、liudh、ldh、liudehua+数字等这种格式的账号,遇到只有后台类的系统,大家都可以用收集好的账号+常见的用户名,进行破解。

8、一般发现漏洞之后,可以尝试分析一下漏洞引发的一连串危害,记住一点,弱口令不是仅仅是弱口令问题,有可能系统还存在其他漏洞,这时候我们就可以利用弱口令进入后台之后,分析出他们其他存在的漏洞,例如:上传、注入、逻辑等漏洞,这种的一般危害比较大,被恶意利用了,很容易引发其他的问题。记住:当你们挖到一个弱口令累的漏洞时候,一定不要轻易提交,可以利用弱口令挖掘一些其他的漏洞,如果后台实在没有其他漏洞(有可能也是个人技术问题、挖不到),那你就提交吧(其实也是一种无奈)。

9、底线问题,严于律己,别发现漏洞后,偷偷拿去乱搞。

明确需求,确定方向

网络安全

网络安全 是一个很广的概念,涉及的岗位也是非常多的,有安全服务、安全运维、渗透测试、web安全、安全开发、安全售前等等。可以看看下面每个岗位的要求与自身兴趣能力匹配度再决定最适合自己的方向。

在这里插入图片描述

渗透测试/Web安全工程师

主要是模拟黑客攻击,利用黑客技术,挖掘漏洞,提出修复建议;需要用到数据库、网络技术、编程技术、渗透技术等。

任职要求:

1.熟悉渗透测试步骤、方法、流程,具备独立开展渗透工作的能力;

2.熟练掌握WEB安全和漏洞挖掘,熟悉漏洞的原理、方法、利用手段及解决方案;

3.至少掌握一种编程语言,能编写漏洞检测

或利用工具;

4.了解代码安全审计的流程、方法及主流代码审计工具的使用;

5.具备CISP/CISP-PTE/CISP-PTS等信息安全领域相关证书者优先。

安全运维/安全服务工程师

主要是对安全防御体系的运维和应急响应工作。能够熟练配置安全设备,具有极强日志分析能力。需精通渗透技术、安全设备原理,知识面要求广,实战能力强。

任职要求:

1.熟悉Owasp ****0漏洞原理、攻击、防御;

2.熟悉常见安全设备,并能够基于安全设备进行分析、处置;

3.熟悉linux等操作系统,能够开展应急响应工作;

4.熟悉安全评估流程;

5.熟悉各类安全工具,如漏洞扫描、基线检查等工具;

6.持有信息安全相关证书CISP、CISSP、CISA、ISO27001等优先考虑。

安全开发工程师

规划、设计并建立公司应用安全整体架构,识别应用系统在架构设计、开发测试、发布上线、运行维护各个阶段的安全风险,提出有效解决方案并落地实施,公司内部安全平台的设计与开发,持续开发迭代平台。

任职要求:

1.有IT技术从业工作经验;

2.熟练掌握Python/Go/C/C++等至少一种语言,和主流WEB框架;

3.了解Spring Boot、Spring MVC、Vue、JavaScript等常用的设计模式和开源框架,有扎实的开发或开发管理技术基础,自学能力强;

4.熟悉信息安全相关知识,具有国内外知名网络安全公司工作经验者优先;

5.具有CISD/CISP/CISSP等网络和信息安全相关认证证书者优先。

安全售前工程师

与客户沟通接洽,根据己方产品,设计技术方案,满足甲方安全需求。需精通服务器,网络技术,安全设备,攻防技术,并对安全趋势跟踪紧密,表达能力和文档能力。

任职要求:

1.具有良好的沟通表达能力与文档编写能力;

2.拥有信息安全相关从业经验,有网络安全或数据安全产品实施、维护经验,熟悉Linux常见操作令;

3.熟悉网络安全相关法律法规以及重要标准,如数安法、个保法、等保2.0、ISO27001等;

4.熟悉项目招投标过程,能根据招标书要求,独立编制投标书、参加招投标会,进行技术讲解和答疑;

5.加分条件:具有信息安全类公司技术研发工作经验;具有CISSP、CISA、CISP等信息安全类资质认证。

多种方式,联合发力
以web安全方向为例:

在这里插入图片描述

第一,可以买一本《白帽子讲web安全》来看着先,作者是吴翰清。先了解常见漏洞的原理,没必要研究的太深,因为光看很难理解,后面结合实践来理解事半功倍。

第二,多看一些安全公众号的文章,和一些博客文章,然后可以试着去做一些ctf的题目,可以拓展你的知识面和帮助你理解,几个较好的ctf平台有bugku、xctf,国外的有hackthebox,不过hackthebox难度较大,不建议一上来就去那里。ctf的题目不应该局限于web题目,其他的都可以做一下,毕竟一些安全比赛题目类型很多。

第三,可以去挖一些公益漏洞,挖之前先看别人怎么挖,挖漏洞是有技巧的,多看文章,可以去了解一下src。

第四,学好python,它是最契合网络安全的语言,可以用他来写脚本进行攻击非常nice。当然了如果可以的话,也要学好java,很多漏洞扫描器都是java写的,逆向方向需要java代码审计能力。也要学好网页设计这门课程,都是基础来的。

第五,web安全的最后都是内网渗透,拿下了一个网站,紧接着要拿下的就是他的主机,Linux基础要学好,这个你前面的积累,也是放到最后的一个。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

细说漏洞挖掘 漏洞分析漏洞利用漏洞挖掘从笔者个人的感觉上来看,这三者尽管通常水乳交融、相互依赖,但难度是不尽相同的。本文就这三者分别谈谈自己的经验和想法。 阅读详情

相关推荐

深入解析CycloneDDS跨域通信中的XML配置文件优化策略

本文深入解析了CycloneDDS跨域通信中XML配置文件的优化策略,重点介绍了网络接口配置、多播设置、性能调优参数及复杂场景下的配置案例。通过实战技巧和调试方法,帮助开发者在SoC环境中实现高效稳定的跨域通信,提升系统性能。

soda5的博客 688

【网络安全之——漏洞挖掘】

SRC,( Security Response Center) ,安全应急响应中心,是企业用来对外接收来自用户发现并报告产品安全漏洞的站点。简单说就是白帽子用于提交随机发现的漏洞的一个平台,提交者可以获取一定的赏金。是企业用于对外接收来自用户发现并报告的产品缺陷的站点。目前主要包含有两种实现方式,第一种是漏洞报告平台,另一种是XSRC模式。

m0_37922995的博客 4028

全志T133-s3(Tina Linux)下RTL8723DS WiFi驱动移植与调试实战

本文详细介绍了在全志T133-s3平台(Tina Linux)上移植RTL8723DS WiFi驱动的完整流程,包括硬件连接、驱动源码获取、内核配置、系统适配、设备树配置以及常见问题排查。通过实战案例,帮助开发者快速解决SDIO接口通信、固件加载、电源管理等关键问题,实现稳定的WiFi功能。

weixin_30505225的博客 507

小白是如何挖漏洞的(技巧篇)入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

这时候就是要靠我们万能的 fofa 了,首先我们要知道有哪些 cms 有漏洞这里大家可以去找网上的漏洞库,里面一般都会有漏洞合集和这里我稍后会给大家推荐一两个看到没有,就是这么多cms,一杀一个准,上分必备漏洞当然很多漏洞都不能一步到位的,当然也有很多是可以给我们刷分的不过是否重复提交,这我就不太清楚了,可以给你们看看我的战果!当然,没审核,能重复几个我就不知道了,一切随缘—-这里随便找一个cms,给你们看看就这cms,信息泄露,你看,多香!,而且这个漏洞是直接把poc打上去就行了!

m0_59598029的博客 3963

AUTOSAR从入门到精通-【应用实战篇】车载HMI-ADAS

ADAS是高级驾驶辅助系统(Advanced Driving Assistance System)简称ADAS。ADAS高级驾驶辅助系统是利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。

lin_xiu的博客 1435

《唤醒你的AI同事:WorkBuddy从零上手》004:与其他 AI 工具的对比

把 WorkBuddy 与聊天机器人、办公套件内置 AI、自动化工具逐维对比,并按当前版本补充四项新差距:结果交付、连接器广度、资料库与多模态产出。

LuckyHanMo的博客 673

漏洞挖掘篇(基础)

漏洞挖掘篇(基础):介绍漏洞挖掘的方法,包括:符号执行、污点分析等,主要讲解词法分析、数据流分析、模糊测试的原理和使用,补充AFL模糊测试框架部分内容。

m0_57929980的博客 1万+

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

SRC 挖漏洞入门教程:从 0 到 1 学会合法挖洞、拿赏金、上榜单(如何挖src漏洞_src漏洞_src漏洞平台_src漏洞挖掘_src漏洞新手怎么入门_src漏洞挖掘网站_src漏洞挖掘真实现状)

如何挖src漏洞_src漏洞_src漏洞平台_src漏洞挖掘_src漏洞新手怎么入门_src漏洞挖掘网站_src漏洞挖掘真实现状_src漏洞响应平台_SRC漏洞挖掘教程_SRC漏洞挖掘平台_SRC漏洞挖掘技巧分享_src漏洞挖掘真实现状_sRC漏洞挖掘思路

2301_79455190的博客 1658

国科大人工智能原理与算法-2024-第一次作业-雷震老师

1. 反射行动(比如从热炉子上缩回你的手)是理性的吗?它们是智能的吗? 2. 以下的计算机系统在何种程度上是人工智能的实例: - 超市条码扫描器 - 网络搜索引擎 - 语音激活的电话菜单 - 对网络状态动态响应的网络路由算法 3. 为什么进化会倾向于导致行为合理的系统?设计这样的系统想达到的目标是什么?

MatsumotoChrikk 2928

ConvNeXt 系列改进:引入大核注意力(LKA)替换 7×7 深度卷积,涨点 2.1%

LSKA替换7×7深度卷积,在ImageNet分类任务上实现2.1%的显著提升,参数量仅增加1M。LSKA的四层1D分解将计算复杂度从O(k²)降至O(k),21×21大核的计算量仅相当于原版7×7的1.7倍,实现了感受野与计算成本的完美平衡。部署友好度极高:LSKA模块在TensorRT FP16量化后延迟仅1.2ms,精度损失<0.1%,远优于Transformer类模型。下游任务全面领先。

ZXSXJ的博客 700

全网好奇!那些漏洞挖掘高手,挖漏洞都有哪些门道?

说到安全就不能不说漏洞,而说到漏洞就不可避免地会说到三座大山:漏洞分析 漏洞利用 漏洞挖掘从个人的感觉上来看,这三者尽管通常水乳交融、相互依赖,但难度是不尽相同的。本文就这三者分别谈谈自己的经验和想法。

weixin_51725318的博客 1082

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

小白挖漏洞必备的两个平台!有技术就能挖,没有上限,光靠挖洞月入1w+的都大有人在!_漏洞挖掘提交网站。

3.漏洞方面,漏洞分很多种,根据不同的标准也会有交叉,黑客要掌握大部分漏洞的形成原理,检测方法,利用方法,修复方法,常见的网站漏洞有sq|注入,XSS, 文件包含,目录遍历,文件上传,信息泄露,CSRF, 账号爆破,各种越权等等,常见的二进制漏洞有缓冲区溢出,堆溢出,整形溢出,格式化字符串等等,分析的时候还要绕过操作系统的保护机制。协议的话也是存在漏洞的,比如TCP、UDP什么的拒绝服务,DNS劫持,ARP欺骗等等, 现在工控、物联网、AI什么的也都有各种各样的漏洞。能走多远,就看你的执行力和兴趣了。

Spontaneous_0的博客 1690

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 黑客成长第一步:什么是CTF比赛?要怎样才能参加?CTF比赛入门到进阶的完整学习路线图(2025版)
下一篇: 网络安全岗位详细解析、工作内容、技能要求?一起来了解网络安全
网络安全_入门教程
博客等级 码龄4年 1万+粉丝 2151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值