导学
渗透测试
渗透测试“的定义和目的
渗透测试是一种通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全性能的评估方法。它的目的是通过识别安全问题,帮助了解当前的安全状况,从而帮助管理人员建立可靠的商业室例,证明所增加的安全性预算或者将安全性问题传达给高级管理层
渗透测试的过程和具体步骤
- 明确目标:确定测试的目标,可能是某个站点、网络或网段。
- 信息搜集:收集目标系统的相关信息,如域名、IP地址、端口等,
- 漏洞探测:利用各种工具和方法探测系统中的漏洞,
- 漏洞猃证:验证探测到的漏洞是否真实存在,
- 编写报告:整理测试结果,编写详细的测试报告
渗透测试的重要性
渗透测试能够帮助组织发现并修复网络中的漏洞,避免潜在的攻击。通过模拟黑客的攻击方式,可以提前发现并解决安全问题,避免安全事故的发生。这种未雨绸缪的方式比事故发生后的补救更为有效。
渗透思路
- 信息收集
- 漏洞扫描
- 漏洞挖掘
- 开始攻击
- 权限维持(持久化)
- 权限提升
- 免杀隐藏
- 横向移动
- 痕迹清理
安全见闻
编程语言
- C语言:一种通用的面向过程的编程语言,广泛应用于系统软件和嵌入式开发。
- C++:在C语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域。
- Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。—4
- Python:简洁易学,拥有丰富的库,适用于数据分析、人工智能、web开发等。—1
- JavaScript:主要用于网页前端开发,也可用于服务器端开发(Node.js)—2
- C#:由微软开发,主要用于Windows平台上的应用开发。
- Ruby:一种简洁而富有表现力的编程语言,常用于Web开发:
- PHP:主要用于Web开发,尤其适合服务器端脚本编程。(白盒代审)—3
- Go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。
- Swift:苹果公司开发的编程语言,用于i0s和macOS应用开发。
- Kotlin:可与Java互操作,主要用于Android开发
以上数字代表学习优先顺序
函数式编程语言
- Haskell:纯函数式编程语言,以强大的类型系统和数学上的严谨性著称。
- Lisp(包括CommonLisp、Scheme等):历史悠久的编程语言家族,以其高度的灵活性和宏系统闻名。
- Clojure:运行在Java虚拟机上的Lisp方言,结合了函数式编程和Java平台的优势。
数据科学和机器学习领域
- R:在统计分析和数据可视化方面应用广泛
- Julia:设计用于高性能科学计算和数据分析。
web全栈开发
- TypeScript:是JavaScript的超集,增加了静态类型检查等特性,提高了大型项目的开发效率。
移动开发
- Objective-C:曾经是iOS开发的主要语言,现在逐渐被Swift取代。
嵌入式开发
- AssemblyLanguage(汇编语言):不同的处理器架构有不同的汇编语言,用于对硬件进行底层控制。
其他
- Pascal:曾经在教学和早期软件开发中有广泛应用
- Delphi(其于0bjectPascal):用于快速应用开发。
- Scala:融合了面向对象编程和函数式编程,运行在Java虚拟机上。
- Elixir:基于Erlang虚拟机,具有高并发和容错性,适合构建分布式系统。
软件程序
- web程序(网站)
- 二进制程序
逆向分析(需要基础) - 驱动程序
二进制程序,.sys属于驱动程序 - 上位机
- 脚本程序
lua,php,java - 操作系统
- 裸板程序
stm32/单片机写代码,没有进程概念,没有操作系统概念 - 机器学习
一般python编写,或者go语言编写 - bios程序
操作系统
- ios
- mac
- linux
- android
- windows
- wince
- vxworks
- RT-Thread
常见系统windowsmacioslinux这种是非实时操作系统
实时操作系统vxworks,RT-Thread,wince.
区别:在操作过程中,比如我们反键刷新,点一下立马弹出来了,但是电脑cpu在执行的时候并没有立马执行你的指令,它可能先执行其他指令再执行刷新指令,为非实时
非实时操作系统
- 非实时操作系统主要致力于在各种情况下提供良好的整体性能、用户体验和多任务处理能力,但不能保证在严格的时间限制内对事件作出响应。
- 与之相对的是实时操作系统(RIS),实时操作系统能够在确定的时间内对外部事件作出响应并完成特定的任务,具有严格的时间确定性和可预测性,常用于对时间要求极为严格的嵌入式系统、工业控制等领域
硬件设备
计算机硬件
- 中央处理器(CPU):计算机的核心部件,负责执行指令和处理数据。它的性能决定了计算机的运行速度。
- 内存:用于存储正在运行的程序和数据,它的容量和速度对计算机的性能有很大影响。
- 硬盘:用于长期存储数据,包括操作系统、应用程序、文件等。硬盘的容量和读写速度也是影响计算机性能的重要因素。
- 显卡:用于处理图形和图像数据,它的性能决定了计算机的图形处理能力,对于游戏玩家和图形设计师来说,显卡的性能非常重要
- 主板:是计算机的核心电路板,连接着各种硬件设备,如CPU、内存、硬盘、显卡等主板的质量和性能对计算机的稳定性和扩展性有很大的影响
网络硬件
- 网络服务器、提供网络服务,如文件存储、电子邮件、Web服务等。网络服务器通常具有较高的性能和可靠性以满足大量用户的需求。
- 网络存储设备:用于存储网络中的数据,如网络附加存储(NAS)和存储区域网络(SAN)。它们提供了大容量、高可靠性的数据存储解决方案。
- 网络打印机:可以通过网络连接被多台计算机共享,方便用户打印文件。
- 网络摄像头:用于视频监控和远程会议等应用。它可以通过网络将视频信号传输到其他设备上
移动设备硬件
- 智能手机:集成了多种功能,如通信、拍照、娱乐、办公等。智能手机的硬件包括处理器、内存、存储、屏幕、摄像头等
- 平板申脑:类似干智能手机但屏暮更适合阅读浏览网页观看视频等、平板申脑的硬件也包括外理器存储、摄像头等,屏幕、摄像头等
- 可穿戴设备:如智能手表、智能手环等,它们可以监测用户的健康数据、运动数据等,并与智能手机等设备进行连接和交互。可穿戴设备的硬件包括传感器、处理器、内存、存储、屏幕等。
硬件发展趋势
- 小型化:硬件设备越来越小型化便于携带和使用。例如,智能手机、平板电脑等移动设备的体积越来越小,性能却越来越强。
- 高性能:随着技术的不断进步,硬件设备的性能不断提高。例如,CPU的处理速度越来越快,内存和存储的容量越来越大。显卡的图形处理能力越来越强
- 智能化:硬件设备越来越智能化,能够自动适应不同的环境和用户需求。例如,智能手机可以根据用户的使用习惯自动调整屏幕亮度、音量等设置。
- 互联互通:硬件设备之间的互联互通越来越紧密,形成了一个庞大的物联网。例如,智能家居设备可以通过网络连接实现自动化控制,智能汽车可以与其他车辆和交通设施进行通信。
网络类型
- 局域网(LAN):覆盖范围较小,一般在一个建筑物或一个校园内。例如,公司办公室内的网络就是一个局域网,用于员工之间共享文件、打印机等资源。
- 城域网(MAN)覆盖范围较大一般在一个城市内。例如,城市的有线电视网络、宽带网络等
- 广域网(WAN):覆盖范围非常大,可以跨越国家和地区。例如,互联网就是一个广域网,连接了全球各地的计算机和网络设备。
网络协议
- TCP/IP协议:是互联网的基础协议,包括传输控制协议(TCP)和网际协议(IP)。TCP负责数据的可靠传输,IP负责数据的路由和寻址。
- HTTP协议:超文本传输协议,用于在Web浏览器和Web服务器之间传输超文本数据,如网页、图片、视频等。
- FTP协议:文件传输协议,用于在计算机之间传输文件。
- SMTP、POP3和IMAP协议:用于电子邮件的发送和接收。
网络设备
- 路由器:连接不同的网络,实现网络之间的数据转发。它根据IP地址和路由表来确定数据的传输路径。
- 交换机:在局域网中连接多台计算机,实现数据的快速交换。它根据MAC地址来转发数据帧。
- 网卡:安装在计算机上,用于连接网络。它将计算机的数据转换为网络信号进行传输,并接收网络信号转换为计算机可识别的数据。
- 无线接入点(AP):提供无线网络连接,使无线设备能够接入局域网或广域网。
网络安全
- 防火墙:用于保护网络免受外部攻击,它可以根据预设的规则过滤网络流量。
- 加密技术:对数据进行加密,防止数据被窃取或篡改。例如,SSL/TLS协议用于在web浏览器和web服务器之间进行加密通信。
- 身份认证:确保只有授权用户能够访问网络资源,常见的身份认证方式有用户名和密码、数字证书、生物识别等。
机器学习
工作流程
数据收集
来源:可以从各种渠道获取数据,如数据库、文件、传感器、网络等。
类型:包括结构化数据(如表格数据)、半结构化教据(如XML、JSON格式的数据)和非结构化数据(如文本、图像、音频等)
数据预处理
数据清洗:去除噪声数据、处理缺失值、纠正错误数据等。例如,对于包含缺失值的数据集可以采用均值填充、中位数填充等方法进行处理。
数据归一化:将数据的特征值缩放到一个特定的范围内,以提高算法的性能和稳定性。常见的归一化方法有最小-最大归一化、2-score标准化等。
特征提取:从原始数据中提取出有用的特征,以便机器学习算法能够更好地处理和理解数据。例如,在图像识别中,可以提取图像的颜色、纹理、形状等特征。
模型选择与训练
根据任务类型和数据特点选择合适的机器学习算法。例如,对于分类问题可以选择决策树支持向量机等算法;对于回归问题可以选择线性回归、随机森林等算法。
将预处理后的数据分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。
使用训练集对模型进行训练,通过调整模型的参数使得模型在训练集上的损失函数最小化
模型评估与优化
使用测试集对训练好的模型进行评估,常用的评估指标有准确率、精确率、召回率、F1值、均方误差等
根据评估结果对模型进行优化,可以调整模型的参数、更换算法、增加数据量等。例如,如果模型在测试集上的准确率较低,可以尝试增加训练数据的数量或调整模型的超参数。
模型应用
将优化后的模型应用到实际问题中,进行预测、分类、聚类等任务。
对模型的应用结果进行监控和评估,不断改进模型以提高性能。
web程序
通常构成前端-后端-数据库-服务器基本就是这些前端ur!请求到后端要执行什么后端登陆,这时候就要调用数据库的数据,数据库放在哪,放服务器上
语言
- html劫持
- css
- JavaScript(xss:dom、反射、存储、点击劫持、请求走私跨域)
代码库
- JQuery
- BOOtstrap
- elementui
框架
- vue
- react
- angular
前端潜在漏洞
潜在漏洞:信息泄露,xss,csrf,点击劫持,访问控制,web缓存洞,跨域漏洞,请求走私
后端潜在漏洞
潜在漏洞:信息泄露,xss,csrf,ssrf,反序列化漏洞,sql注入漏洞,命令注入漏洞,服务端模板注入,跨域漏洞,访问控制
语言
- php(反序列化、sql注入、命令注入)
- java
- python
- golang
- c/c++
- lua
- nodejs
- ruby
数据库
潜在漏洞:sql注入、xss、命令注入