- 博客(141)
- 资源 (2)
- 收藏
- 关注
原创 Linux中常见的攻击手段
已知的某个进程在处理某个权限的时候,造成了越权的情况,被人利用系统漏洞或程序漏洞发起攻击,进入未打补丁的系统。黑客首先利用网络扫描工具扫描目标主机的漏洞,然后根据扫描出的漏洞,有针对性地实施攻击,常见的有SQL注入漏洞攻击,网页权限漏洞“挂马”攻击等。常见的有拒绝服务攻击DoS与分布式拒绝服务攻击DDoS,黑客一般利用伪装的源地址或者控制其他多台主机,向目标发出大量的、连续的连接请求,服务器无法在短时间内接受这么多请求,就会造成系统资源耗尽,服务挂起,严重时会造成服务器瘫痪。Linux中常见的攻击手段。
2023-04-28 13:19:17 594 1
转载 2022年顶级网络安全专家最爱的5大数据加密方法
什么是数据加密?数据加密如何工作?常用的加密技术类型有哪些?对称加密方法非对称加密方法散列法5种常见加密算法网络犯罪那么疯狂,数据被别人看到了,甚至窃走了怎么办?数据加密是一种常见且有效的安全方法,是保护企业数据的首选,可是如何给数据进行加密呢,需要用到哪些技术你知道吗?今天我们就来了解几种最常用的数据加密技术,不过在此之前,我们先了解什么是数据加密。什么是数据加密?数据加密是将数据从可读格式转换为加扰信息的过程。这样做是为了防止窥探者读取传输中的机密数据。加密可以应用于文档、文件、消息
2022-03-15 09:56:32 1346
原创 数据库三大范式是什么
数据库三大范式是什么?第一范式:每个列都不可以在拆分。第二范式:在第一范式的基础上,非主键列完全依赖于逐渐,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。...
2022-02-11 10:02:23 10609
原创 在linux系统中find和grep的区别?
在linux系统中find和grep的区别? Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 Linux下的find:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。,,,find起始目录寻找条件操作说明:find命令从指定目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之
2022-02-11 09:56:28 1001
原创 HTTP的get请求和post请求的区别?
HTTP的get请求和post请求的区别?在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。GET方式提交的数据最多只能有1024字节,而POST则没有此限制。安全性问题。正如在(1)中提到,使用GET的时候,参数会显示在地址栏上,而POST不会。所以,如果这些数据在中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。安全的和幂等的。所谓安全的意味着该操作用于获取信
2022-02-11 09:32:00 2870
原创 令牌简介及原理(Token)
令牌(Token)就是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求时属于哪一个用户的.它允许你不提供密码或其他凭证的前提下,访问网络和系统资源.这些令牌将持续存在于系统中,除非系统重新启动. 令牌最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来,令牌有很多种,比如访问令牌(Access Token)表示访问控制操作主题的系统对象;密保令牌(Security token),又叫作认证令牌或者硬件令牌,是一种计算机身份校验的物理设备,例如U盾;会话令牌(Session
2021-11-29 21:34:47 12627
原创 利用WMIC实战MS16-032本地溢出漏洞
假设此处我们通过了一系列的渗透测试得到了目标机器的Meterpreter Shell. 首先输入getuid命令查看已经获得的权限,可以看到现在的权限很低,是test权限。 meterpreter > getuid Server username:WIN-S7TJ4B561MT\test尝试输入getsystem命令提权,结果失败。 meterpreter > getsystem接着查看系统的已达补丁,传统的方法是在目标机的CMD命令行下输入systeminfo命令,或者通过查
2021-11-29 20:57:09 3144
原创 TCP/IP体系结构
网络体系结构协议主要用途TCP/IPIP,ICMP,TCP,UDP,HTTP,TELNET,SNMP,SMTP…互联网,局域网
2021-11-28 13:01:43 2789
原创 Kali Linux安装中文输入法(极简)
此处安装的是Google拼音输入法第一步 命令行输入 apt-get install fcitx fcitx.googlepinyin输入以上命令回车,等待安装(期间会有一次,按回车确认即可)第二步 安装完成后,重启电脑第三步 重启后在搜索框搜索 “fcitx” ,点击“fcitx配置”,配置即可 ...
2021-11-25 15:23:05 1410
原创 Kali Linux火狐浏览器firefox怎么设置中文显示
在kali linux系统中默认使用的firefox浏览器为英文显示界面,打开命令窗口 dpkg -l | grep firefox发现kali linux系统的firefox为esr版本,即不经常更新的版本 apt search firefox | grep zh-cn可以找到esr版本的中文语言包安装esr版中文语言包 sudo apt install firefox-esr-l10n-zh-cn -y3. 等待语言包下载完,则显示界面就可以变为中文可能遇见的问题 ,.
2021-11-25 14:59:33 3757 4
原创 IPS(Intrusion Prevention System)入侵防护系统原理
IPS(Intrusion Prevention System)入侵防护系统IPS原理 防火墙是实施访问控制策略的系统,对流经的网络流量进行检查,拦截不符合安全策略的数据包。入侵检测技术(IDS)通过监视网络或系统资源,寻找违反安全策略的行为或攻击迹象,并发出报警。传统的防火墙皆在拒绝那些明显可疑的网络流量,但仍然允许某些流量通过 ,因此防火墙对于很多入侵攻击仍然无计可施。绝大多数IDS系统都是被动的,而不是主动的。也就是说,在攻击实际发生之前,它们往往无法预先发出警报,而IPS则倾向于提供主动防护,
2021-11-25 10:26:51 5697
原创 协议数据单元
协议数据单元(Protocol Data Unit )物理层的 PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的 PDU是数据段(segment),其他更高层次的PDU是报文(message)。虚电路是分组交换的两种传输方式中的一种。在通信和网络中,虚电路是由分组交换通信所提供的 面向连接的通信服务 。在两个节点或应用进程之间建立起一个逻辑上的连接或虚电路后,就可以在两个节点之间依次发送每一个分组,接收端收到分组的顺序必然与发送端的发送
2021-11-23 13:57:35 2593
原创 MAC地址和IP地址的区别
MAC地址和IP地址的区别一、地址长度的不同1、MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:00:50:29:5A:8H:1E就是一个MAC地址。2、IP地址为32位,由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。二、所在寻址协议层上的区别1、MAC地址应用在OSI第二层,即数据链路层。数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址)。2、IP地址应用于
2021-11-23 13:56:55 5326
原创 初识LINUX
初识LINUX终端右键open terminal系统信息查询uname -a 显示系统名,节点名称,操作系统的发行内核版号,系统版本,运行的机器ID号uname -r 显示操作系统的发行内核版本查看硬盘以及分区信息fdisk -l注:设备文件说明:一切皆文件查看CPU信息car /proc/cpuinfo加粗样式...
2021-11-23 13:54:52 599
原创 后渗透攻击:权限提升
渗透的最终目的是获取服务器的最高权限,即Windows操作系统中管理员账号的权限,或Linux操作系统中root账户的权限。提升权限的方式分为以下两类。纵向提权:低权限角色获得高权限角色的权限,例如,一个WebShell权限通过提权之后拥有了管理员的权限,那么这种提权就是纵向提权,也称做权限升级横向提权:获取同级别角色的权限。例如:通过已经攻破的系统A获取了系统 B的权限,那么这种提权就属于横向提权。所以在成功获取目标机Meterpreter Shell后,我们要知道现在已经拥有了什么权限。
2021-11-22 23:32:45 623
原创 MySQL
数据库MySQL数据初学者安装数据库yum install 服务名称 #安装服务yum install mariadb-server.x86_64查看服务启动状态systemctl list-unit -files过滤查看服务启动状态systemctl list-unit-files | grep “服务名称”systemctl list-unit-files | grep “mariadb.service ”开启服务systemctl start 服务名称systemctl sta
2021-06-30 09:29:59 147
原创 操作符之字符串操作符+和+=
字符串操作符+和+= 这个操作符在Java中有一项特殊用途:连接不同的字符串。尽管与+和+=的传统使用方式不太一样,但我们还是很自然的使用这些操作符来做这件事请。 这想功能用在C++中似乎是个不错的主意,所以引入了操作符重载(operator overloding)机制,以便C++程序员可以为几乎所有操作符增加功能。但十分遗憾,与C++的另外一些限制结合在一起,使得操作符重载成为了一种复杂的特性,程序员在设计自己的类时,必须对此有十分周全的考虑。与C++相比,尽管操作符重载在Java中更易实现(就像
2020-06-29 14:05:43 1473
原创 操作符之按位操作符
按位操作符 按位操作符用来操作整数基本数据类型中的单个“比特”(bit),即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。 按位操作符来源于C语言面向底层的操作,在这种操作中经常需要直接操纵硬件,设置硬件寄存器内的二进制位,Java的设计初衷是嵌入电视机机顶盒内,所以这种面向底层的操作仍被保留了下来。但是,人们可能不会过多地用到位操作符。 如果两个输入位里都是1,则按位“与”操作符(&)生成一个输出位1;否则生成一个输出位0.如果两个输入位里只要有
2020-06-24 13:27:48 368
原创 操作符之逻辑操作符
逻辑操作符 逻辑操作符“与”(&&),“或”(||),“非”(!)能根据参数的逻辑关系,生成一个布尔值(true或false)。下面这个例子就使用了关系操作符和逻辑操作符: //:operators/Bool.java //Relational and logical operators. import java.util.*; import static net.mindview.util.Print.*; public class Bool {
2020-06-23 11:50:19 540
原创 操作符之关系操作符
关系操作符 关系操作符生产的是一个boolean(布尔)结果,它们计算的是操作数的值之间的关系。如果关系是真实的,关系表达式会生成true(真);如果关系不真实,则会生成false(假),关系操作符包括小于(<),大于(>),小于或等于(<=),大于或等于(>=),等于(======)以及不等于(!=),等于和不等于适用于所有的基本数据类型,而其他比较符不适用于boolean类型。因为boolean值只能为true或false,“大于”和“小于”没有实际意义。测试对象的等价性
2020-06-22 11:40:08 638
原创 操作符之自动递增和递减
自动递增和递减 和C类似,Java提供了大量的快捷运算。这些快捷运算使编码更方便,同时也使得代码更容易阅读,但是有时可能使代码阅读起来更困难。 递增和递减运算是两种相当不错的快捷运算(常称为“自动递增”和“自动递减”运算)。其中,递减操作符是“–”,意为“减少一个单位”;递增操作符是“++”,意为“增加一个单位”。举例来说,假设a是一个int(整数)值,则表达式++a就等价于(a=a+1)。递增和递减操作符不仅改变了变量,并且以变量的值作为生成的结果。 这两个操作符各有两种使用方式,通常称为“
2020-06-21 11:53:25 481
原创 操作符之算术操作符
算术操作符Java的基本算术操作符与其他大多数程序设计语言是相同的,其中包括加号(+),减号(—),除号(/),乘号(*)以及取模操作符(%,它从整数除法中产生余数)。整数除法会直接去掉结果的小数位,而不是四舍五入地圆整结果。Java也使用一种来自C和C++的简化符号同时进行运算与赋值操作,这用操作符后紧跟一个等号来表示,它对于Java中的所有操作符都适用,只要其有实际意义就行。例如,要将x加4,并将结果赋回给x,可以这么写:x=4。下面这个例子展示了各种算术操作符的用法: //:operato
2020-06-21 11:10:12 327
原创 操作符之赋值
赋值赋值使用操作符“=”。它的意思是“取右边的值(即右值),把它复制给左边(即左值)”。右值可以是任何常数,变量或者是表达式(只要它能生产一个值就行)。但左值必须是一个明确的,已命名的变量。也就是说,必须有一个物理空间可以存储等号右边的值。举例来说,可将一个常数赋值给一个变量: a = 4; 但是不能把任何东西赋给一个常数,常数不能作为左值(比如不能说4=a)。对基本数据类型的赋值是很简单的。基本类型存储了实际的数值,而并非
2020-06-20 15:15:28 533
原创 操作符之优先级
优先级当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。Java对计算顺序做了特别的规定。其中,最简单的规则就是先乘除后加减。程序员经常会忘记其他优先级规则,所以应该用括号明确规定计算顺序。例如,以下语句中的(1)和(2): //:operators/precedence.java public class Precedence { public static void main(String[] args) { int x = 1,y = 2,z =
2020-06-20 10:58:25 537
原创 操作符之使用Java操作符
使用Java操作符操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不同,但效果是相同的。加号和一元的正号(+),减号和一元的负号(—),乘号(*),除号(/)以及赋值号(=)的用法与其他编程语言类似。操作符作用于操作数,生产一个新值。另外,有些操作符可能会改变操作数自身的值,这被称为“副作用”。那些能改变其操作数的操作符,最普遍的用途就是用来产生副作用;但要记住,使用此类操作符生成的值,与使用没有副作用的操作符生成的值,没有什么区别。几乎所有的操作符都只能操作“基本类型”。例外的操
2020-06-20 10:39:28 192
原创 一切都是对象之你的第一个Java程序
你的第一个Java程序 //HelloDate.java import java.util.* public class HelloDate { public static void mian (String[] args) { System.out.println("Hello,it's:"); System.out.println(new Date()); } } 在每个
2020-06-20 01:11:06 160
原创 一切都是对象之构建一个Java程序(三)static关键字
static关键字 通常来说,当创建类时,就是在描述那个类的duix的外观与行为。除非用new创建那个类的对象,否则,实际上并未获得任何对象。执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用。 用两种情形用上述方法是无法解决的,一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起,也就是说,即使没有创建对象,也能够调用这个方法。 通过static关键字可以满足这两方面的需要
2020-06-06 11:03:40 122
原创 一切都是对象之构建一个Java程序(二)运用其他构件
运用其他构件 如果想在自己的程序里使用预先定义好的类,那么编译器就必须知道怎么定位它们。当然,这个类可能就在发出调用的那个源文件中;在这种情况下,就可以直接使用这个类——即使这个类在文件的后面才会被定义(Java消除了所谓的“向前引用”问题)。 如果那个类位于其他文件中,又会怎么样?你可能会认为编译器应该有足够的智慧,能够直接找到它的位置,但是事实并非如此。想像下面的情况,如果你想使用某个特定名字的类,但其定义却不止一份(假设这些定义各不相同)。更糟糕的是,假设你正在写一个程序,在构建过程中,你想讲
2020-06-05 15:45:06 159
原创 一切都是对象之构建一个Java程序(一)名字可见性
名字可见性 名字惯例对任何程序设计语言来说,都是一个重要问题,如果在程序的某个模块里使用了一个名字,而其他人在这个程序的另一个模块里也使用了相同的名字,那么怎样才能区分这两个名字并防止二者互相冲突呢?这个问题在C语言中尤其重要,因为程序往往包含许多难以关联的名字。C++类(Java类基于此)将函数包于其内,从而避免了与其他类中的函数名相冲突。然而,C++仍允许全局数据和全局函数的存在,所以还是有可能发生冲突。为了解决这个问题,C++通过几个关键字引入了名字空间的概念。 Java采用了一种全新的方法来
2020-05-25 21:20:38 152
原创 一切都是对象之方法、参数和返回值
方法、参数和返回值 许多程序设计语言(像C和C++)用函数这个术语来描述命名子程序;而在Java里却常用方法这个术语来表示“做某些事情的方式”。实际上,继续把它看做是函数也无妨。尽管这只是用词上的差别。 Java的方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:名称、参数、返回值和方法体。下面是它最基本的形式: ReturnType methodName(/* Argument list */){ /* Method body */ }
2020-05-24 23:49:48 343
原创 一切都是对象之创建新的数据类型:类
创建新的数据类型:类 如果一切都是对象,那么是什么决定了某一类对象的外观与行为呢?换句话说,是什么确定了对象的类型?你可能期望有一个名为“type”的关键字,当然它必须还有相应的含义,然而,从历史发展角度来看。大多数面向对象的程序设计语言习惯用关键字class来表示“我准备告诉你一种新类型的对象看起来像什么样子”。class这个关键字之后紧跟的是新类型的名称,例如: class ATypeName {/*Class body goes here */} &nbs
2020-05-22 13:09:02 251
原创 一切都是对象之永远不需要销毁对象(二)对象的作用域
对象的作用域 Java对象不具备和基本类型一样地生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。所以假如你采用代码 { String s = new String("a string"); }//End of scope 引用S在作用域终点就消失了。然而,s指向的String对象仍然继续占据内存空间。在这一小段代码中,我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已超出了作用域的范围。
2020-05-21 18:30:20 254
原创 一切都是对象之永远不需要销毁对象(一)作用域
作用域 大多数过程型语言都有作用域(scope)的概念。作用域决定了在其内定义的变量名的可见性和生命周期。在C和C++以及Java中,作用域有花括号的位置决定。例如: { int x = 12; //Only x available { int q = 96; //Both x & q avaiable } //Only x available //q is "out of scope" } &
2020-05-19 17:05:21 277 1
原创 一切都是对象之必须由你创建所有对象(三)Java中的数组
Java中的数组 几乎所有的程序设计语言都支持数组。在C和C++中使用数组是很危险的,因为C和C++中的数组就是内存块。如果一个程序要访问其自身内存块之外的数组,或在数组初始化前使用内存(程序中常见的错误),都会产生难以预料的后果。 Java的主要目标之一是安全性,所以许多在C和C++里困扰程序员的问题在Java里不会再出现。Java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查为代价的。但由此换来的是安全性和效率的提高,因此付出的代价
2020-05-18 16:57:39 143
原创 一切都是对象之必须由你创建所有对象(二)特例:基本类型
特例:基本类型 在程序设计中经常用到一系列类型,它们需要特殊对待。可以把它们想像成“基本”类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象——特别是小的、简单的变量,往往不是很有效。因此,对于这些类型,Java采取与C和C++相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更加高效。 Java要确定每种基本类型所占存储空间的大小。它们的大小并不像其他大多数语言那样随机器硬件架构的变化而变化。这种
2020-05-17 11:37:51 362
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人