burpsuite官方靶场之逻辑漏洞篇

news2024/11/16 13:35:05

*1.过于信任客户端控件*

*1.1 达成目标*

用wiener买一件Lightweight l33t leather jacket。

提供的账户:wiener/peter

*1.2攻击步骤*

第一步,登录wienr,并且来到主界面,发现Lightweight l33t leather jacket要$1337,而我们只有$100。

由此可见,我们需要更改其价格来进行购买。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步,来到商品详情界面,添加到购物车。

1719064660_6676d854d7ffbb278d102.png!small?1719064667943

第三步,对加入购物车进行抓包,发现如下数据包。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尝试更改其price的参数值。然后发送到浏览器。

1719064685_6676d86d04e2faf4d3787.png!small?1719064695783

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*2.高等级的逻辑缺陷*

*2.1 达成目标*

登录提供的账户,然后购买"Lightweight l33t leather jacket"。提供的账户如下:

wiener/peter

*2.2 攻击步骤*

第一步,来到该在线的购物商场,让自己保持登录的状态,然后进入Lightweight “l33t” Leather Jacket的详情页面。

1719064698_6676d87a2698356543f31.png!small?1719064705236

第二步,把该商品添加到账户的购物车,并对此进行抓包。在quantity这里传递一个负数值。

1719064703_6676d87f21f69d982c7e0.png!small?1719064710134

1719064725_6676d89572c8a0c5073c3.png!small?1719064732506

但是我们进行结算的时候,发现是不允许负数结算的。

1719064739_6676d8a3c042f5baa2b20.png!small?1719064747174

第三步,调整一下策略,我们需要购买一件目标商品,然后再购买大量负数的商品,以保证总价格在100以下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1719064753_6676d8b18c73a9b0085f0.png!small?1719064760710

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*3.矛盾的安全控制*

*3.1 达成目标*

该实验存在其逻辑缺陷——任意用户访问只对公司员工可用的功能。为了解决该实验,访问管理面板删除员工carlos。

*3.2 攻击步骤*

进入该靶场,发现右上角划线有个账户和注册的功能。

1719064778_6676d8caba28030093334.png!small?1719064787802

点击账户就跳转到了登录界面,但是我们并没有账户,因此注册一个账户。

1719064784_6676d8d0a35f1e9002227.png!small?1719064792426

邮箱填写Email client所给的邮箱

1719064790_6676d8d655e6f6b944415.png!small?1719064800152

1719064802_6676d8e2aaeb3500058d6.png!small?1719064811980

跳转到Email client,也就是攻击者自己的邮箱点击注册链接完成注册,然后使用才注册好的邮箱进行登录

1719064811_6676d8eb7258f0c5f05b6.png!small?1719064819064

登录完成后跳转到My Account页面,输入该公司内部邮箱来更新其邮箱。

1719064818_6676d8f2a23676a53a445.png!small?1719064826033

更新了邮箱之后,来到其admin panel删除carlos账户。

1719064824_6676d8f82317c02a03e03.png!small?1719064831316

1719064830_6676d8fe1aba92cba045b.png!small?1719064837084

*4.有缺陷的商业规则实施*

*4.1 达成目标*

这个实验室在购买流程有逻辑缺陷,为了解决这个实验,利用缺陷购买"Lightweight l33t leather jacket"。

该实验提供如下账户:

wiener/peter

*4.2 攻击步骤*

第一步,登录给定的账户,然后观察home页面。

发现在划线部分有优惠券,因此可以产生一定的折扣。

1719064839_6676d907c613842a5d086.png!small?1719064847399

在底部,发现有一个注册订阅按钮,意思是注册定位我们的简报。点击看看。

1719064844_6676d90cd383826b98ae3.png!small?1719064852525

在输入了自己的电子邮件之后,会给出一个新的优惠券。

1719064851_6676d913de4cf1c65d089.png!small?1719064859117

第二步,购买指定的商品,也就是"Lightweight l33t leather jacket",并且使用两个优惠券。

1719064859_6676d91b11b7a74813312.png!small?1719064866489

现在,有个大胆的想法,由于没有其他优惠券了,因此交替重复使用这两张优惠券,看能不能够打骨折。

第三步,获取到了使用两个优惠券的数据包。放置到repeater,进行交替重放。

1719064888_6676d938ea565aceef883.png!small?1719064897657

1719064893_6676d93dce049035bcff1.png!small?1719064901462

1719064899_6676d94343a9df0470632.png!small?1719064906734

*5.低等级逻辑缺陷*

*5.1 达成目标*

该实验没有充分验证用户输入。你能够利用在购买流程中的逻辑缺陷,以未预料到的价格购买商品。为了解决该实验,需要购买一件"Lightweight l33t leather jacket"。

你能够以指定账户进行登录:wiener/peter

*5.2 攻击步骤*

第一步,使用指定的账户进行登录。然后选中指定的商品进行购买,并且对该购买的流程进行抓包。

1719064909_6676d94dccb8725502860.png!small?1719064918229

1719064916_6676d954e330f410c00ca.png!small?1719064925413

第二步,把其数据包放置到intruder功能项,然后设置数量为99

1719064922_6676d95a2fbe2c7eb77dc.png!small?1719064929317

在其payloads这里,设置为Null payloads,并且设置成持续性的发送

1719064930_6676d962481c30d754053.png!small?1719064937326

资源池这里设置为单线程

1719064935_6676d96775860c0a837ed.png!small?1719064943504

回到购物篮,观察其页面,会发现到一定数量之后变成负数。

1719064940_6676d96cd3f6f0585e2b8.png!small?1719064948739

因此可以推断,当购买数量大到一定程度,其总价会变成负数。那么继续增加其购买数量,负数的总价就会趋近于0,再购买其他的商品,那么价格就在100以内了。

第三步,清空购物车,再次使用intruder进行攻击,不一样的地方在与设置其payload的数量为323。

1719064946_6676d972b6160d5a55cf8.png!small?1719064954594

然后把购买数量设置成47,并且重放其数据包。

1719065014_6676d9b6ac5c378569073.png!small?17190650224021719065019_6676d9bb4615777429777.png!small?1719065027544

第四步,再购买一些其他的商品,把价格凑到100以内。

1719065027_6676d9c3d3053b53b4682.png!small?1719065035168

1719065033_6676d9c93c374888ff3b7.png!small?1719065040202

*5.3 一个问题*

为什么在该靶场中,当总价达到一定数量之后,会变成负数呢?

首先,该靶场的总价是一个整数,也就是int,它是用32位2进制表示的有符号的整数,也就是说它的取值范围在(2,147,483,647,-2,147,483,647)。

如果当正数超过这个数值的时候,那么就会回到最小的数值,也就是-2,147,483,64,形成了一个循环。

*6.矛盾的异常输入处理*

*6.1 达成目标*

该实验没有充分验证用户输入,你能利用账户注册进程的逻辑缺陷来访问管理功能。为了解决该实验,访问管理面板并且删除用户carlos。

*6.2 攻击步骤*

观察该页面,发现该实验是和前面的矛盾的安全控制是一样的功能界面。

1719065043_6676d9d34a9a357f163d0.png!small?1719065050515

第一步,在Burp的target功能中选择画框部分也就是实验室域,然后右键点击该项,选择Engagement tools > discovery content,爬取其隐藏的网站的内容与路径。

1719065048_6676d9d8d219a17e8d552.png!small?1719065058821

点击步骤1运行。

1719065054_6676d9de1f1455f8d0596.png!small?1719065061189

发现了一个admin的路径,显示401。

1719065060_6676d9e44be65a9e38fdc.png!small?1719065067390

从高亮部分可以看出,只有DontWannaCry用户才能访问该路径。

1719065065_6676d9e9b636117ebbfa5.png!small?1719065073079

第二步,利用其注册功能进行注册,并且需要注意的是,其注册的邮箱地址字符超过255个字符,字符长度为259。

1719065071_6676d9ef17d0ce99c893c.png!small?1719065078695

进行登录发现后面的.net被截断了。

1719065078_6676d9f62d87d8086ba7e.png!small?1719065086167

第三步,利用邮箱地址最大长度只有255,超过长度截断的特点进行注册绕过。

1719065082_6676d9fad89d403698c67.png!small?1719065090657

该超长的字符被截断后就是aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com.exploit

1719065092_6676da04bf6d250254b60.png!small?1719065102383

1719065107_6676da1389145b54a2f18.png!small?1719065116880

*6.3 补充说明*

字符生成代码如下:

email = ‘@dontwannacry.com.exploit-0ae000d403cdcb3087e34d5301e7005e.exploit-server.net’
origin_email = ‘.exploit-0ae000d403cdcb3087e34d5301e7005e.exploit-server.net’
str = ‘a’

print(len(email))
print(len(origin_email))
count = 239
whilecount > 1:
email = str + email
count -= 1

print(email)
print(len(email))

*7.两用端点的弱隔离*

*7.1 达成目标*

该实验做了一个用户权限等级是基于输入的有缺陷的假设。因此,你能利用这个账户管理特征的逻辑来访问任意用户的账户。为了解决这个实验,访问administrator账户来删除carlos账户。

该实验给了一个指定的账户:wiener/peter

*7.2 攻击步骤*

第一步登录给定的账户,发现有更改密码的功能。

1719065122_6676da227dbd4dd72ac75.png!small?1719065130158

第二步,对更改密码进行抓包。

1719065126_6676da26bcca09ab013fc.png!small?1719065134411

1719065133_6676da2d3865c40457559.png!small?1719065140484

第三步,利用修改的密码进行登录。

1719065137_6676da3128bd200d8d2e6.png!small?1719065144139

*8.不充分的工作流程验证*

*8.1 达成目标*

该实验在一系列购买流程的事件序列做了有缺陷的假设。为了解决这个实验,利用这个缺陷购买一件"Lightweight l33t leather jacket"。

你能使用给定的账号进行登录:wiener/peter

*8.2 攻击步骤*

第一步,登录给定的账号。

1719065151_6676da3f4c520af88bd56.png!small?1719065160101

第二步,购买能负担的商品,并且对其购买的流程进行抓包观察。

发现在该流程中,最后的结算的时候会触发一个/cart/checkout的请求,该请求会跳转请求/cart/order-confirmation?order-confirmed=true,也就是说它会对订单进行确认。

1719065159_6676da472d304ee2419c3.png!small?1719065167006

现在有个大胆的想法,在购物篮中添加指定的商品,也就是"Lightweight l33t leather jacket",然后在重放这个订单确认的数据包。

1719065169_6676da517c43d4ac6132a.png!small?1719065176616

1719065174_6676da56086bfa7f02132.png!small?1719065181185

1719065178_6676da5ab82925b4c06cd.png!small?1719065185645

*9.通过有缺陷的状态机绕过身份验证*

*9.1 达成目标*

该实验在登录进程的一系列事件中做了有缺陷的假设。为了解决该实验,利用这个缺陷来绕过实验的身份验证,访问管理接口,来删除用户carlos。

你能登录给定的账户:wiener/peter

*9.2 攻击步骤*

第一步,使用给定的账户进行登录,并抓取相应的数据包。

通过观察发现,当进行登录了之后(也就是第一个数据包);第二个数据包就是获取/role-selector页面;第三个数据包就是选择其角色,当选择完之后;第四个数据包就是跳转到home页面。

1719065184_6676da602a88710272826.png!small?1719065191406

现在有个大胆的想法,既然登录之后会自动请求角色选择页面,然后才是跳转到主界面。那么是否可以直接丢弃中间的角色选择页面,直接请求主界面。

第二步,重新进行登录,然后丢弃/role-selector数据包,直接请求home界面。

操作之后发现,可以直接访问到admin panel

1719065189_6676da655b736dd084db7.png!small?1719065198800

1719065194_6676da6a2e164f93d37c6.png!small?1719065201364

*10.无限金钱逻辑缺陷*

*10.1 达成目标*

该实验在购买流程有逻辑缺陷。为了解决该实验,利用这个缺陷购买一件 “Lightweight l33t leather jacket”。

你能用给定的账户进行登录:wiener/peter

*10.2 攻击步骤*

第一步,使用给定的账户进行登录,并且观察该实验室的页面。

观察Home页面发现,在该页面最下方,有一个注册订阅的按钮,提示可以订阅简报。

1719065204_6676da742644fc98db970.png!small?1719065212558

订阅之后,显示给了一个优惠券SIGNUP30

1719065215_6676da7f0eda15818d0e4.png!small?1719065223030

相当于有了一个七折的优惠。

其次,发现在my account页面有一个gift cards的功能模块。

1719065222_6676da86aad0ddecaac78.png!small?1719065229868

在主界面有对应的gift card商品。

1719065234_6676da9268e155566e288.png!small?1719065242337

第二步,尝试利用优惠券来购买gift card商品,看看会发生什么。

当购买了两次之后,发现,会发送一个gift card code给我们,我们把这个代码放在my account的gift cards输入框输入,发现我们的钱包会在100的基础上面多了三元。

1719065242_6676da9a61ffadf879bef.png!small?1719065252063

1719065248_6676daa011ef16092cba0.png!small?1719065256052

现在,我有了一个大胆的想法,那就是,重复利用其七折优惠券购买gift card商品,达到通过购买的方式让自己的钱变多(我也是第一次见- -)。

话不多说,直接开干,发家致富不是梦。

第三步,把上述的想法,利用burp来实现,上面的这一系列的操作,涉及到了如下的五个数据包。

第一个数据包,把gift card放到购物篮。

第二个数据包,使用7折优惠券。

第三个数据包,进行结算检查。

第四个数据包,订单信息的确认。

第五个数据包,使用第四个数据包给的gift card code进行发家致富。

1719065254_6676daa6556f74f8622d5.png!small?1719065264712

现在,我们要把上述的操作自动化,因此就要用到burp设置里面的macro。(在第二篇 authentication vul中的2.3 暴力破解绕过双因素认证也使用过该功能)

1.来到macros功能,创建一个macro,并且进行一系列配置。

1719065260_6676daac6303b72ab6e55.png!small?1719065271402

1719065270_6676dab6ed373b1a116ed.png!small?1719065278556

1719065285_6676dac5982108bd93150.png!small?1719065293172

1719065293_6676dacdaa2c01cfcaf82.png!small?1719065302316

1719065299_6676dad3d6a9f671b8ab3.png!small?1719065308007

2.应用该macro。

1719065306_6676dada623377468698e.png!small?1719065313998

1719065312_6676dae02f47743830c8b.png!small?1719065319546

1719065317_6676dae5226116214e181.png!small?1719065325614

1719065322_6676daeaee26b9e56c174.png!small?1719065332456

第四步,把/my-account的get包发送到intruder,然后利用null payload生成420个数据包。

1719065328_6676daf052fdc0792df2f.png!small?1719065335710

1719065337_6676daf96eb72cf03c693.png!small?1719065344420

1719065347_6676db03405f87ce861eb.png!small?1719065354980

1719065352_6676db084a33c15f93cbe.png!small?1719065360212

1719065357_6676db0d0ba1ecd3f3ef6.png!small?1719065369637

1719065361_6676db111fac8436b2ef1.png!small?1719065369635

*11.通过加密绕过认证oracle*

*11.1 达成目标*

该实验存在一个逻辑缺陷,将加密的oracle暴露给用户。为了解决该实验,利用这个缺陷访问管理面板,并且删除carlos用户。

你能使用给定的用户进行登录——wiener/peter

*11.2 攻击步骤*

第一步,来到登录界面,选中Stay logged in进行登录。

1719065370_6676db1abf4e8079ad901.png!small?1719065378330

观察其登录的数据包会发现,在其对应的响应包的Set-Cookie header存在一个stay-logged-in参数。也就是说,会多出一个持久性cookie。

1719065375_6676db1f2709bfb91a728.png!small?1719065382416

并且在该网站的后续请求会带上该持久性cookie。

1719065380_6676db24e8c362c24213c.png!small?1719065388030

第二步,当登陆完成之后,会自动跳转到my account页面。

1719065385_6676db29bf6181aa720ad.png!small

尝试在该页面的输入框提交异常数据(不符合电子邮件格式)进行观察。该操作涉及到下面图片的两个数据包。

1719065392_6676db304201e24e639c8.png!small?1719065401172

观察第一个数据包发现,在发起更改邮箱的数据包请求的响应中,发现在其Set-Cookie存在notification参数。

1719065401_6676db398704be426121b.png!small?1719065410861

观察第二个数据包,也就是第一个数据包的跳转;第一个数据包在提交了更改邮箱的请求之后,会自动跳转到对自己账户页面的请求;在该请求中,会发现其cookie携带了第一个请求的notification,并且观察其响应包发现了,我们提交的email参数的数据明文值。

1719065407_6676db3fb4baa82df37cd.png!small?1719065414848

因此可以得出,当在自己的账户页面更改其email,并且更改的email是一个异常值的时候,会获取到一个对其异常值加密的notification参数值,并且后续的get /my-account的数据包的响应页面中,解密该参数值。那么我们可以利用这个现成的加解密参数。

第三步,对持久性cookie进行解密。

复制加密数据包里面的持久性cookie。

1719065413_6676db456061d38978b1a.png!small?1719065422005

把复制的cookie放置到解密数据包,然后查看其明文,发现其持久cookie的构成是——username:timestamp。

1719065419_6676db4bd010b74b8cc37.png!small?1719065427043

第四步,现在我有个大胆的想法,那就是构造一个管理员的持久性cookie。

# 伪造的管理员的持久性cookie

administrator:1697360707193

# 使用加密数据包对该明文构造的持久性cookie进行加密处理

7Ts30260HSz4jyVcSgzP%2baCtPFfWQrtnwwbYuFUxm9Q3b4cy%2bAgKmWpEIRjGVZD4maP7mX8NG%2f8NKMtSuXXxCA%3d%3d

利用加密数据包请求其明文持久性cookie的密文。

1719065429_6676db55d3782dbd95e83.png!small?1719065439724

然后复制改密文,放置到解密数据包对此进行解密。

1719065436_6676db5c9637d266bfb5e.png!small?1719065443626

把该密文放置到浏览器页面中,观察是否能切换到administrator用户。进行尝试之后,并未成功。

1719065442_6676db62c0f5547e8c662.png!small?1719065449877

第五步,回到这个解密数据包,发现我们构造出来的明文明明是——administrator:1697360707193;但是通过加密再解密出来的明文却是——Invalid email address: administrator:1697360707193 。

1719065447_6676db67931e85383977b.png!small?1719065454761

现在还不敢妄下结论,把之前的一个加解密数据的响应包和该响应包的notification进行比对看看。

通过观察发现,只要是自己构造的非法的email参数值,其进行加密解密之后,其明文都会加上一个前缀——"invalid email address: "。

1719065453_6676db6d5be894e7937d9.png!small?1719065460760

因此,要对密文做处理,也就是删除其加密的前缀。

把对administrator:1697446306837的加密值转发到Decoder功能板块;对其进行url解码以及base64解码;删除前面的23个字节;然后进行base64编码和url编码。

1719065458_6676db72d5f1fc579f53b.png!small?1719065465905

然后把该值复制到decrypt解密数据包,进行重放攻击。

观察其响应的数据包,发现出现了报错:使用填充密码解密时,输入长度必须是16的倍数。也就是说必须得把它填充成16的倍数。

1719065466_6676db7ab8f175a0c922f.png!small?1719065475077

第六步,对email输入的administrator:1697360707193进行九个字节的填充,也就是xxxxxxxxxadministrator:1697360707193。然后在执行第五步的操作。

1719065471_6676db7fb54accc1d18c7.png!small?1719065479453

这样就成功去掉了前面的"invalid email address: "

1719065479_6676db876a05662769156.png!small?1719065487173

第七步,把这一串加密值复制到cookie的stay-logged-in参数里面。

1719065487_6676db8f40c8a04d7ee78.png!small

1719065498_6676db9a29505942346b3.png!small?1719065505163

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试经典 106. 从中序与后序遍历序列构造二叉树

最近小胖开始找工作了,又来刷苦逼的算法了 555 废话不多说,看这一题,上链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/?envTypestudy-plan-v2&envIdtop-inte…

【Unity】简单举例UI合批,优化draw call

1. UGUI-Editor 首先引入UGUI-Editor插件 链接: https://pan.baidu.com/s/1PpxStvgRCDi9xjUr6j6nCQ?pwdm5ju 提取码: m5ju 或者直接去Github搜索UGUI-Editor 2. 没有UI时 3. 放几个UI看看效果 4. 选中Canvas,右键优化Batch 发现减少了3个,这是因为&…

STM32智能无人机控制系统教程

目录 引言环境准备智能无人机控制系统基础代码实现:实现智能无人机控制系统 4.1 数据采集模块 4.2 数据处理与飞行控制 4.3 通信与导航系统实现 4.4 用户界面与数据可视化应用场景:无人机应用与优化问题解决方案与优化收尾与总结 1. 引言 智能无人机控…

vue3创建项目

1. 安装node.js,添加环境变量,确保cmd里能使用node命令以及npm命令:node --version npm --version 本人安装的版本如下: 2. 安装vue的脚手架 npm install -g vue/cli 3. 创建vue项目:1)使用ui&#xff1…

#数据结构 链表

单向链表 1. 概念 单向链表 单向循环链表 双向链表 双向循环链表 解决:长度固定的问题,插入和删除麻烦的问题 1、逻辑结构: 线性结构 2、存储结构: 链式存储 链表就是将 结点 用链串起来的线性表,链就是 结点 中的…

开源网页终端webssh容器镜像制作与使用

1.Dockerfile编写&#xff1a; # 指定镜像目标平台与镜像名 alpine表示基础镜像 第一层镜像 FROM --platform$TARGETPLATFORM alpine # 添加元数据到镜像 LABEL maintainer"Jrohy <euvkzxgmail.com>" # 编译时变量 ARG TARGETARCH # 执行编译命令&#xff0c;…

c#第五次作业

目录 1. 实现通用打印泛型类&#xff0c;可以打印各个集合中的值&#xff0c;方便调试 2. 计算遍历目录的耗时 3. 有哪些算术运算符&#xff0c;有哪些关系运算符&#xff0c;有哪些逻辑运算符&#xff0c;有哪些位运算符&#xff0c;有哪些赋值运算符 1&#xff09;算术运算…

我国静止无功发生器(SVG)市场规模逐渐扩大 高压SVG为主流产品

我国静止无功发生器&#xff08;SVG&#xff09;市场规模逐渐扩大 高压SVG为主流产品 静止无功发生器&#xff08;SVG&#xff09;又称为静止同步补偿器、先进静止补偿器、静止调相机等&#xff0c;是利用全控型功率器件组成的桥式变流器来实现动态无功调节的一种先进无功自动补…

医学图像分割论文:Learnable Ophthalmology SAM

文章目录 0. Abstract1. Introduction2. Learnable Ophthalmology(眼科学) SAM2.1 Preliminaries(预先)2.2 Learnable Prompt Layer3. Experiment3.1 Datasets3.2 Evaluation Metrics(指标)3.3 Implement Details3.4 Experimental Results3.5 Generalization4. Discussion5. …

【JavaWeb程序设计】JSP访问数据库(二)

目录 一、编写一个网页&#xff0c;实现根据输入学生姓名的模糊查询&#xff0c;如果查找不到就显示“查无此人” 1. 运行截图 2. 建表 3. JSP页面主要代码&#xff08;inquire.jsp&#xff09; 4. Bean实体类 5. DAO层 6. Service层&#xff08;模糊查询&#xff09; …

展厅AI数字人:实现智慧园区与数字孪生的高效交互展示

随着人工智能技术的飞速发展&#xff0c;智慧园区和数字孪生技术已经成为展厅管理和规划的重要工具&#xff0c;展厅AI数字人可以提供沉浸式的展览体验。 展厅大屏幕支持与AI数字人连接&#xff0c;用户可以直接通过语音交互的形式操作大屏幕显示的内容&#xff0c;实现对大屏…

ELFK 8.12.2 部署 -- docker部署方式⚽

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

Mysql系列-Binlog主从同步

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/669450627 一、主从同步概述 mysql主从同步&#xff0c;即MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主 从同步功能&#xff0c;经过配置&#xff0c;可以实现基于库、表…

如何降低亚马逊测评风险?掌握这些技巧就够了!

无论是初涉亚马逊测评领域的新手还是经验丰富的老手&#xff0c;都不可避免地会面临各种风险挑战。为了将这些风险降至最低&#xff0c;我们需掌握一系列高效且安全的测评策略。以下是一些关键的亚马逊测评技巧与策略&#xff1a; 亚马逊测评优化策略 1. 真实购买与国外账号&a…

​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​

五、IS-IS报文 1、IS-IS报文格式 IS-IS报文是直接封装在数据链路层的帧结构中的。 PDU(Protocol Data Unit&#xff0c;协议数据单元): 报文头(IS-IS Header) 变长字段(Variable Length Fields )。 IS-IS Header: 通用头部(PDU Common Header) 专用头部(PDU Specific H…

javaIO流(2)

一.字符流 字符流对数据的操作是以一个个字符为单位的,字符流只能读文本文件,并将读到的字节按照编码表转为对应的字符,Reader和Writer是字符流的两个最大的抽象类,InputStreamReader和OutputStreamWriter分别继承了Reader和Writer,它俩的功能就是将读取到的字节转换为字符,所…

实验代码结构介绍

提高模型复用性&#xff0c;让模型对应的配置更加清晰&#xff0c;代码书写条理 学习自https://zhuanlan.zhihu.com/p/409662511 Project ├── checkpoints # 存放模型 ├── data # 定义各种用于训练测试的数据集 ├── eval.py # 测试代码 ├── loss.py # 定义的…

CSS 后代选择器正确写法 爸爸儿子之间有代沟

CSS 后代选择器正确写法 爸爸儿子之间有代沟 example&#xff1a; > <body> > <div class"outer"> > <span class"inner"></span> > </div> > </body> > <head> > <style>…

如何选择快手矩阵源码:关键因素解析

在短视频行业迅速发展的今天&#xff0c;快手平台已成为众多内容创作者和企业的重要阵地。为了有效管理和运营多个快手账号&#xff0c;快手矩阵源码成为了一个关键工具。然而&#xff0c;市场上的快手矩阵源码种类繁多&#xff0c;选择一个合适的源码并非易事。本文将探讨选择…

【QT】多元素控件

多元素控件 多元素控件1. List Widget2. Table Widget3. Tree Widget 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别&#xff0c;以 QTableWidget 和 QTableView 为例&#xff1a; …