DVWA-impossible代码审计

文章目录

  • DVWA靶场—impossible代码审计
    • 1.暴力破解(Brute Force)
      • 1.1 代码审计
      • 1.2 总结
    • 2.命令注入(Command Injection)
      • 2.1 代码审计
      • 2.2 总结
    • 3.跨站请求伪造(CSRF)
      • 3.1 代码审计
      • 3.2 总结
    • 4.文件包含漏洞(File Inclusion)
      • 4.1 代码审计
      • 4.2 总结
    • 5.文件上传漏洞(File Upload)
      • 5.1 代码审计
      • 5.2 总结
    • 6.不安全的验证码(Insecure CAPTCHA)
      • 6.1 代码审计
      • 6.2 总结
    • 7.SQL注入(SQL Injection)
      • 7.1 代码审计
      • 7.2 总结
    • 8.SQL盲注(SQL Injection(Blind))
      • 8.1 代码审计
      • 8.2 总结
    • 9.弱会话IDS(Weak Session IDS)
      • 9.1 代码审计
      • 9.2 总结
    • 10.跨站脚本攻击(XSS(DOM))
      • 10.1 代码审计
      • 10.2 总结
    • 11.跨站脚本攻击反射型(XSS(Reflected))
      • 11.1 代码审计
      • 11.2 总结
    • 12.跨站脚本攻击存储型(XSS(Stored))
      • 12.1 代码审计
      • 12.2 总结
    • 13.内容安全策略(CSP Bypass)
      • 13.1 代码审计
      • 13.2 总结
    • 14.JavaScript Attacks
    • 15.DVWA靶场—impossible代码审计总结
    • 15.DVWA靶场—impossible代码审计总结

DVWA靶场—impossible代码审计

1.暴力破解(Brute Force)

1.1 代码审计

  1. Token校验
    使用checkToken()函数进行校验防止CSRF

image-20231001181635009

函数说明:

  • isset():检测变量是否已声明并且其值不为 null。

    checkToken()方法:

image-20231001193933595

  1. 对用户的输入的username和password进行消毒

函数说明:

  • stripslashes():addslashes的反向操作,移除addslashes()函数添加的转义反斜杠字符。返回一个去除转义反斜线后的字符串(’ 转换为 ’ 等等)。双反斜线(\)被转换为单个反斜线(\)。
  • md5():计算字符串的 MD5 散列值,并返回该散列值。
  1. 定义登录失败限制次数,上锁时间,账户锁定状态的默认值

    image-20231001182306260

  2. 通过预处理语句查询数据库,防止 SQL 注入等安全问题。

    image-20231001182228829

  3. 检查用户是否被锁定,以及判断用户的登录失败次数是否大于默认的失败次数,如果大于,并且锁定的时间还没有到,那么就进行锁定,否则就不锁定。

中间嵌套的if判断是用于检查是否超时,如果 $timenow 的值小于 $timeout 的值,则用户仍然被锁定,因此需要设置 $account_locked 为 true表示该账号锁定。否则用户可以重新登录。

image-20231001182920714

函数说明:

strtotime(): 将任何英文文本日期时间描述解析为 Unix 时间戳。

time():返回当前的 Unix 时间戳。

  1. 预编译查询数据库(防止SQL注入漏洞),匹配用户名和密码

image-20231001184841271

  1. 判断所登录的用户是否符合登录条件。数据库中信息对应上后,并且用户没有被锁定,则登录成功。最后重置登录次数。

image-20231001184917495

  1. 如果不符合登录条件,在页面上给用户反馈,并且更新错误登录次数。

image-20231001185009025

函数说明:

  • sleep():延缓执行。
  • rand(2,4):产生一个2-4之间的随机整数。
  1. 设置最后的登录时间

    image-20231001185126293

1.2 总结

在暴力破解的impossible级别中,源代码中使用了Token校验,有效的放防止了CSRF攻击,并且进行了预编译查询数据库,防止了SQL注入漏洞。还添加了用户登录失败次数校验,账户锁定规则校验。

2.命令注入(Command Injection)

2.1 代码审计

  1. Token校验

使用checkToken()函数进行校验防止CSRF

image-20231001194728669

函数说明:

  • isset():检测变量是否已声明并且其值不为 null。
  1. 获取用户的输入,将输入的IP以 . 分成了四个

    image-20231001194808461

函数说明:

  • stripslashes():addslashes的反向操作,移除addslashes()函数添加的转义反斜杠字符。返回一个去除转义反斜线后的字符串(’ 转换为 ’ 等等)。双反斜线(\)被转换为单个反斜线(\)。

  • explode():explode — 使用一个字符串分割另一个字符串。此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
  1. 检查分割出的每一位是否是整数,如果分割出的四个元素都是整数,那么将IP重新组合在一起。else中如果其中任何一个元素不是整数那么页面给用户反馈所提供的IP无效。

中间嵌套的if用于检测操作系统,以便于执行ping命令

image-20231001195353924

函数说明:

  • is_numeric():检测变量是否为数字或数字字符串。

  • stristr():函数搜索字符串在另一字符串中的第一次出现,判断windows NT 是否出现在操作系统的名称描述中。

  • shell_exec():用于在服务器上执行 shell 命令,并将命令的输出作为字符串返回。如果命令执行错误,将会返回NULL。

  • php_uname(‘s’):返回运行 PHP 的系统的有关信息。返回了运行 PHP 的操作系统的描述。

    php_uname(string $mode = "a"): string
    

mode是单个字符,用于定义要返回什么信息:

  • a:此为默认。包含序列 "s n r v m" 里的所有模式。
  • s:操作系统名称。例如: FreeBSD
  • n:主机名。例如: localhost.example.com
  • r:版本名称,例如: 5.1.2-RELEASE
  • v:版本信息。操作系统之间有很大的不同。
  • m:机器类型。例如:i386

2.2 总结

在命令注入的impossible级别中,源代码中使用了Token校验,有效的放防止了CSRF攻击。在代码逻辑上对用户输入的ip数据进行过滤,也就是对输入的ip进行按位查看是否规范。从而防止了命令注入漏洞的产生。

3.跨站请求伪造(CSRF)

3.1 代码审计

Token校验,使用checkToken()函数进行校验防止CSRF

image-20231001200717295

函数说明:

  • isset():检测变量是否已声明并且其值不为 null。
  1. 获取用户的输入的数据,让用户输入当前密码,进行二次校验。

    image-20231001200735987

  2. 对当前用户输入的密码进行消毒。通过stripslashes()函数将数据的反斜杠删除,以及通过mysqli_real_escape_string() 函数对数据的特殊符号进行转义。

image-20231001200910982

函数说明:

  • md5():计算字符串的 MD5 散列值,并返回该散列值。
  • isset():检测变量是否已声明并且其值不为 null。
  • is_object():查找变量是否是对象
  • mysqli_real_escape_string():此函数用于创建可在 SQL 语句中使用的合法 SQL 字符串。考虑到连接的当前字符集,对指定的字符串进行编码以生成转义的 SQL 字符串。
  • trigger_error():用于触发一个用户级别的错误条件,它能结合内置的错误处理器所关联,或者可以使用用户定义的函数作为新的错误处理程序(set_error_handler())。
  1. 通过预处理语句查询数据库(防止SQL注入),检查用户当前输入的密码是否正确。

image-20231001201643999

  1. 检查新密码和旧密码是否匹配,当前密码是否与用户匹配。如果两者匹配成功,则使用新密码连接数据库,并在页面给用户成功的反馈。

image-20231001202130021

3.2 总结

在跨站请求伪造的impossible级别中,添加了Token校验,让用户在修改密码的时候都携带返回的token值,有效的防止了攻击者伪造修改密码的请求。

还添加了二次校验,在修改密码的时候,必须先输入旧密码,攻击者无法获取密码,从而使得CSRF漏洞失效。

4.文件包含漏洞(File Inclusion)

4.1 代码审计

  1. 添加了白名单限制,如果包含的文件不是所规定的文件,那么输出报错信息

image-20231002094617347

4.2 总结

在文件包含的impossible级别中,在代码的编写上,添加了白名单的限制,防止攻击者使用相对路径来访问服务器上的敏感文件。同时也可以防止攻击者使用HTTP协议来远程包含。

5.文件上传漏洞(File Upload)

5.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF

image-20231002095526728

  1. 获取上传文件的相关信息,并将其存储在相应的变量中。提过strrpos()函数获取最后一个点的位置,并使用substr()函数来进行截取字符串,最后获取到文件的后缀名。

image-20231002095544370

函数说明:

  • substr():返回字符串的子串
substr(string $string, int $offset, ?int $length = null)

返回字符串 stringoffsetlength 参数指定的子字符串。

  • strrpos():计算指定字符串在目标字符串中最后一次出现的位置。此函数是区分大小写的,与strripos()函数相反,strripos()函数不区分大小写
  1. 定义文件上传目标路径

image-20231002100029720

函数说明:

  • uniqid():基于以微秒计的当前时间,生成一个唯一ID

  • ini_get():获取一个配置选项的值。成功是返回配置选项值的字符串,null的值则返回空字符串。如果配置选项不存在,将会返回False。

  • sys_get_temp_dir():返回用于临时文件的目录,返回 PHP 储存临时文件的默认目录的路径。

  1. 判断文件是否合法,并且重新生成图片到内存中去。

这里利用了白名单的方式来判断上传的文件后缀名是否为:jpg,jpeg,png。文件大小是否符合规则,文件类型是否合法,并且通过getimagesize()函数来判断上传的文件是否是图像文件。

中间嵌套的if是通过重新编码图像来删除所有的元数据,根据图片的地址或者URL来生成一个新的JPEG图片或者PNG图片到内存中,并且将内存中的图片以100或者9的画质保存到临时文件中。

imagedestroy()函数最后释放内存中的图片资源。

image-20231002100607744

函数说明:

  • strtolower():将字符串转化为小写,返回转换后的小写字符串。
  • getimagesize():是PHP中用于获取图像的大小和格式的函数,底层利用文件头来判断文件的类型。返回一个包含图像的宽度、高度、类型和MIME类型的数组。如果无法访问图像, 将生成 E_WARNING 级别的错误。读取错误时,将生成 E_NOTICE 级别的错误。
  • imagecreatefromjpeg():从 JPEG 文件或 URL 创建一个新图象。成功后返回图象对象,失败后返回 false。
  • imagejpeg():将图像资源保存为 JPEG 图像文件。成功时返回 true, 或者在失败时返回 false。
  • imagecreatefrompng():从 PNG文件或 URL 创建一个新图象。成功后返回图象对象,失败后返回 false
  • imagepng():将图像资源保存为 PNG 图像文件。成功时返回 true, 或者在失败时返回 false
  • imagedestroy():销毁图像资源以释放内存。
  1. 把文件从临时目录移动到Web根目录下,并删除所有存在的临时文件。

image-20231002102845066

函数说明:

  • rename():重命名一个文件或目录,可以用于移动文件。成功时返回 true, 或者在失败时返回 false。

  • getcwd(): 获取当前工作目录。成功则返回当前工作目录,失败返回 false。

  • file_exists():检查文件或目录是否存在。如果由 filename指定的文件或目录存在则返回 true,否则返回 false。

file_exists(string $filename)
  • unlink():删除文件

5.2 总结

在文件上传漏洞的impossible级别中代码逻辑如下:

  • 使用checkToken()函数进行校验防止CSRF。
  • 通过使用白名单的方式来判断上传的文件后缀名是否合法。然后使用getimagesize()函数来判断上传的文件是否是图像文件。并且使用imagecreatefromjpeg()函数和imagecreatefrompng()函数来基于原先的图像创建一个新的图像文件并存储到内容中,有效的防止了图片木马。

6.不安全的验证码(Insecure CAPTCHA)

6.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF

image-20231002112516440

2.获取用户输入的数据并进行消毒

image-20231002112753603

  1. 检查验证码

image-20231002112841297

  1. 判断验证码是否成功,如果验证码错误,反馈给用户

通过预处理语句查询数据库(防止SQL注入),检查当前密码是否正确。
中间嵌套的if判断用户检查用户当前输入的密码是否正确,如果正确则更新密码,否则将错误的提示信息反馈给用户。

image-20231002113049689

6.2 总结

在不安全的验证码的impossible级别中,采用了checkToken()函数进行校验防止CSRF。并且通过预处理语句查询数据库防止SQL注入攻击。最后采用了二次校验,如果修改密码必须输入旧密码,从而有效的防止了漏洞产生。

7.SQL注入(SQL Injection)

7.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF

image-20231002113814787

  1. 检测用户输入的id值是否为整数。所有sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。最后确保sql查询出的结果为1条数据,才返回数据,如果是多条数据则不返回。

image-20231002114749691

函数说明:

  • is_numeric():检测变量是否为数字或数字字符串。如果 value 是数字或数字字符串, 返回 true,否则返回 false。

  • intval():获取变量的整数值。

7.2 总结

在SQL注入的impossible级别中,所有sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。最后确保sql查询出的结果为1条数据,才返回数据,如果是多条数据则不返回。

8.SQL盲注(SQL Injection(Blind))

8.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF

image-20231002114924386

  1. 同样sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。

image-20231002115215227

8.2 总结

在SQL盲注的impossible级别中,所有sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。

9.弱会话IDS(Weak Session IDS)

sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问权限,无需录直接进入特定用户界面,进而进行其他操作。

9.1 代码审计

  1. 源代码中采用了随机数,时间戳,固定字符串Impossible的方式。进行sha1运算散列值,使得攻击者无法获取到dvwaSession的值

image-20231002115503873

函数说明:

  • sha1():计算字符串的 sha1 散列值。以字符串形式返回 sha1 散列值。
  • mt_rand(): 通过梅森旋转(Mersenne Twister)随机数生成器生成随机值。返回 min(或者 0)到 max(或者是到 mt_getrandmax(),包含这个值)之间的随机整数,如果 max 小于 min 则返回 false。
  • time():返回当前的 Unix 时间戳
  • setcookie():发送 Cookie。setcookie()定义了 Cookie,会和剩下的消息头一起发送给客户端。和其他消息头一样,必须在脚本产生任意输出之前发送 Cookie(由于协议的限制)。

9.2 总结

在弱会话IDS的impossible级别中,为了防止攻击者获得cookie用户凭证。源代码中采用了随机数+时间戳+固定字符串”Impossible“。进行sha1运算散列值,使得攻击者无法获取到dvwaSession的值。

10.跨站脚本攻击(XSS(DOM))

10.1 代码审计

  1. 由于服务端没有代码,所有的保护机制在客户端进行处理。

image-20231002120713958

  1. 直接将lang渲染在option中,并没有对lang进行编码,所以注入的XSS攻击代码无法被客户端执行。

image-20231002145941447

var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);

这句代码代码主要用于从当前页面的 URL 中提取指定的参数值。

document.write("<option value='" + lang + "'>" + (lang) + "</option>");

该代码的意思是从 URL 中提取的参数值。将其作为下拉列表项的选项值。

根据观察页面源代码发现在url路径中输入的任何符号,都会被URL编码,在源代码中渲染我们输入的攻击代码的时候,没有进行解码直接以URL编码的方式展示在网页中,所以即使注入了XSS的攻击代码,也无法被客户端执行。

10.2 总结

在跨站脚本攻击的impossible级别中,通过url进行XSS攻击代码的注入,攻击代码中的特殊符号会被URL编码,并且以URL编码的方式展示在网页中,所以即使注入了XSS的攻击代码,也无法被客户端执行。

11.跨站脚本攻击反射型(XSS(Reflected))

11.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF。并且采用了htmlspecialchars()函数对输入的字符转换为HTML实体。

image-20231002152341767

函数说明:

  • htmlspecialchars():将输入的特殊字符转换为 HTML 实体。该函数会将特殊字符替换为对应的 HTML 实体,例如将 < 替换为 <,将 > 替换为 >,将 " 替换为 " 等等。

11.2 总结

在跨站脚本攻击反射型的impossible级别中,使用checkToken()函数进行校验防止CSRF。并且采用了htmlspecialchars()函数对输入的字符转换为HTML实体。从而有效的防御了反射性XSS攻击。

12.跨站脚本攻击存储型(XSS(Stored))

12.1 代码审计

  1. Token校验,使用checkToken()函数进行校验防止CSRF。

image-20231002152634088

  1. 获取用户的输入,并且对用户输入的信息进行消毒。

image-20231002152811973

函数说明:

  • stripslashes():反引用一个引用字符串。返回一个去除转义反斜线后的字符串('\转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。

  • trim():去除字符串两端的空白字符(包括空格、制表符、换行符等)

  • htmlspecialchars():将输入的特殊字符转换为 HTML 实体。

  1. sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。

image-20231002152956364

12.2 总结

在跨站脚本攻击存储型的impossible级别中,使用checkToken()函数进行校验防止CSRF。并且采用了htmlspecialchars()函数对输入的字符转换为HTML实体。由于存储型XSS攻击涉及到了数据库操作,为了保证数据库安全,防止SQL注入,对要进行数据库操作语句进行预编译处理。

13.内容安全策略(CSP Bypass)

13.1 代码审计

image-20231002153927043

  1. 在代码开始处,通过设置 Content-Security-Policy 头部字段,指定了一个 CSP 设置,即 script-src ‘self’;。这个设置规定只允许从同域名加载 JavaScript 脚本,并且不允许使用内联脚本。

  2. 接下来的条件语句检查是否存在名为 include 的 POST 参数。如果存在该参数,将其内容添加到 $page[‘body’] 变量中。

  3. 然后创建一个包含说明文本和一个空 元素的表单,表单的提交方法是 POST。

  4. 表单中有一个按钮元素,点击该按钮会触发一个事件,调用名为 clickButton() 的 JavaScript 函数。

  5. 页面加载了一个名为 source/impossible.js 的 JavaScript 文件,通过

image-20231002153948320

  1. source/impossible.js 中定义了一个名为 clickButton() 的函数。该函数会创建一个新的 <script> 元素,并将其 src 属性设置为 source/jsonp_impossible.php,然后将该元素添加到页面的 <body> 元素中。

  2. source/impossible.js 中还定义了一个名为 solveSum(obj) 的函数,用于处理异步加载的远程脚本返回的数据。如果返回的数据包含 answer 属性,该函数会将该属性值设置为页面中的 <span id="answer"> 元素的内容。

  3. 最后,通过获取按钮元素并添加点击事件监听器,实现了按钮点击后调用 clickButton() 函数的功能。

13.2 总结

这段代码使用 Content Security Policy(CSP)限制了 JavaScript 代码的来源和类型,同时对用户输入进行了处理。可以有效地提高了安全性。

14.JavaScript Attacks

永远不能相信来自用户的任何输入,而且必须对此做出防备,但你又不能阻止用户的输入,因为这样可能会干扰网站的正常使用,所以压根就不存在Impossible级别。

image-20231002154623032

15.DVWA靶场—impossible代码审计总结

靶场中所有的impossible级别的代码,防御措施如下:

  • 都采用了Token校验,使用checkToken()函数进行校验防止CSRF。

  • 在获取用户输入的时候都做了数据消毒,对用户输入的数据进行过滤。

  • 在执行一些特殊操作的时候采用了二次校验的形式,例如在修改密码的时候需要输入旧密码。

  • 对访问服务器资源的时候,做了白名单限制。限制用户访问资源的范围。

  • 上传文件的时候,对文件后缀名,文件类型,文件大小做过滤,上传图像文件的话会创建一个新的图像文件并存储到内容中,有效的防御了图片木马。

  • 在对数据库进行操作的时候sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。

  • 源代码中使用了htmlspecialchars()函数,将输入转为HTML实体,从根源上阻止了XSS攻击。

站的正常使用,所以压根就不存在Impossible级别。

[外链图片转存中…(img-Xxt3cjJr-1697728017838)]

15.DVWA靶场—impossible代码审计总结

靶场中所有的impossible级别的代码,防御措施如下:

  • 都采用了Token校验,使用checkToken()函数进行校验防止CSRF。

  • 在获取用户输入的时候都做了数据消毒,对用户输入的数据进行过滤。

  • 在执行一些特殊操作的时候采用了二次校验的形式,例如在修改密码的时候需要输入旧密码。

  • 对访问服务器资源的时候,做了白名单限制。限制用户访问资源的范围。

  • 上传文件的时候,对文件后缀名,文件类型,文件大小做过滤,上传图像文件的话会创建一个新的图像文件并存储到内容中,有效的防御了图片木马。

  • 在对数据库进行操作的时候sql语句的执行使用prepare函数,通过预处理语句查询数据库,防止SQL注入攻击。

  • 源代码中使用了htmlspecialchars()函数,将输入转为HTML实体,从根源上阻止了XSS攻击。

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

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

相关文章

二叉搜索树的详解及Map和Set的介绍

目录 1.二叉搜索树 1.1二叉搜索树的介绍 1.2.二叉搜索树的实现 1.2.1二叉搜索树的创建 1.2.2查找关键字 1.2.3插入 1.2.4删除 1.3二叉搜索树的性能分析 2.Map Map官方文档 2.1Map 的常用方法说明 2.2关于Map.Entry的说明,> 2.3注意事项 2.4reeMap和HashMap的区别 …

E054-web安全应用-Brute force暴力破解进阶

课程名称&#xff1a; E054-web安全应用-Brute force暴力破解进阶 课程分类&#xff1a; web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请&#xff0c;对该公司旗下的网站进行安全检测&#xff0c;经过一番检查发现该网站可能存在弱口令漏洞…

MySql 数据库基础概念,基本简单操作及数据类型介绍

文章目录 数据库基础为什么需要数据库&#xff1f;创建数据库mysql架构SQL语句分类编码集修改数据库属性数据库备份 表的基本操作存在时更新&#xff0c;不存在时插入 数据类型日期类型enum和set 数据库基础 以特定的格式保存文件&#xff0c;叫做数据库&#xff0c;这是狭义上…

【交互式分割】——数据可视化

ritm, 交互式分割 数据可视化 数据包括一张图片 正样本点 负样本点 二分类的mask标签 如何模拟多次点击的迭代过程&#xff1f;

【计算机网络笔记】计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 系列文章目录时延带宽积丢包率吞吐量/率&am…

Systemverilog断言介绍(四)

3.3 SEQUENCES, PROPERTIES, AND CONCURRENT ASSERTIONS 3.3.1 SEQUENCE SYNTAX AND EXAMPLES 一个序列是在一段时间内发生的一组值的规范。构建序列所使用的基本操作是延迟规范器&#xff0c;形式为##n&#xff08;表示特定数量的时钟&#xff09;或##[a:b]&#xff08;表示…

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于GRU-AdaBoost门控循环单元结…

谷歌浏览器网页显示不完整解决方法

谷歌浏览器是非常多用户都在用的一款电脑软件&#xff0c;谷歌浏览器以启动速度快、浏览速度快、界面简单、极强的稳定性等优点受到大家的喜爱&#xff0c;在使用的时候&#xff0c;您可能会遇到打不开网页或显示不全等情况&#xff0c; 那么谷歌浏览器显示不完全怎么解决呢&am…

HTML 表单笔记/练习

表单 概述 表单用于收集用户信息&#xff0c;用户填写表单提交到服务器 一般传参方式&#xff1a; GETPOSTCookie 传参要素 传参方式 GETPOST 参数的名字目标页面内容的数据类型&#xff08;只有在上传文件的时候&#xff09; 提示信息 一个表单中通常还包含一些说明性的文…

AI大模型高速发展,Web3还远吗?

在过去的几年里&#xff0c;人工智能&#xff08;AI&#xff09;和Web3技术都经历了令人瞩目的发展。AI大模型&#xff0c;特别是像GPT-3、GPT-4等这样的巨型语言模型&#xff0c;已经成为AI领域的明星&#xff0c;而Web3则代表了下一代互联网的愿景&#xff0c;具有去中心化和…

HarmonyOS 语言基础类库开发指南上线啦!

语言基础类库提供哪些功能&#xff1f;多线程并发如何实现&#xff1f;TaskPool&#xff08;任务池&#xff09;和 Worker 在实现和使用场景上有何不同&#xff1f; 针对开发者关注的并发等语言基础类库的相关能力&#xff0c;我们在新推出的语言基础类库开发指南中提供了详细的…

【temu】分析拼多多跨境电商Temu数据分析数据采集

Temu是拼多多旗下跨境电商平台&#xff0c;于2022年9月1日在美国、加拿大、新加坡、中国台湾、中国香港等市场上线。本文作者从销售额、销量、产品分布等方面&#xff0c;对Temu产品进行了分析&#xff0c;一起来看一下吧。 item_get获得商品详情item_review获得商品评论列表it…

浏览器不能访问阿里云ECS

一、浏览器不能访问端口 在阿里云ECS中构建了工程&#xff0c;nigix或者tomcat或者其他&#xff0c;然后在本地浏览器访问ip端口的时候&#xff0c;连接超时&#xff0c;解决办法&#xff1a; 进入阿里云ECS服务 -> 查看公网ip (外部连接需要使用公网) -> 进入ECS实例的…

Go 函数的健壮性、panic异常处理、defer 机制

Go 函数的健壮性、panic异常处理、defer 机制 文章目录 Go 函数的健壮性、panic异常处理、defer 机制一、函数健壮性的“三不要”原则1.1 原则一&#xff1a;不要相信任何外部输入的参数1.2 原则二&#xff1a;不要忽略任何一个错误1.3 原则三&#xff1a;不要假定异常不会发生…

文件管理系统的基本认识

1.文件的属性 文件的定义:一组有意义的信息的集合。 1.文件名: 由创建文件的用户决定文件名&#xff0c;主要是为了方便用户找到文件&#xff0c;同一目录下不允许有重名文件。 2.标识符: 一个系统内的各文件标识符唯一&#xff0c;对用户来说毫无可读性&#xff0c; 因此…

C#选择排序(Selection Sort)算法

选择排序&#xff08;Selection Sort&#xff09;原理介绍 选择排序&#xff08;Selection Sort&#xff09;是一种简单的排序算法&#xff0c;其实现原理如下&#xff1a; 遍历待排序数组&#xff0c;从第一个元素开始。 假设当前遍历的元素为最小值&#xff0c;将其索引保存…

汽车屏类产品(四):仪表Cluster

###前言 仪表Cluster/仪表盘Dashboard,作为伴随汽车诞生就存在的一个主要零部件之一,从机械到电子到数字,可以说也是逐渐发展到现在的。 目前的主流框图如下,中间processor就是主控芯片,可能有buttons/switches,有display显示屏+backlight背光,有audio->speake…

day08_面向对象_封装_继承_this_super_访问修饰符

今日内容 1.作业 2.封装 3.继承 4.this和super 5.访问修饰符 零、复习 成员变量和局部变量(画表格) this的作用 this是当前对象,当前方法的调用者this可以调用属性和方法this.属性, this.方法名(),this() 构造方法的作用和语法特征 作用: 创建对象,属性初始化特征: 没有返回值,…

STM32的hex文件格式的分析

前言 最近研究Bootloader&#xff0c;通过串口实现STM32程序的更新。需要学习了解STM32的Hex文件格式。在这进行一下总结。 HEX文件格式 我们通过文本形式打开hex文件&#xff0c;可以看到&#xff1a; 这一行就是一条指令数据&#xff0c;这里对数据帧格式进行说明&#xff…

图像检索算法 计算机竞赛

文章目录 1 前言2 图像检索介绍(1) 无监督图像检索(2) 有监督图像检索 3 图像检索步骤4 应用实例5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 图像检索算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff…