[SWPUCTF 2021 新生赛]WEB刷题记录

13.[SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2021 新生赛]WEB刷题记录_第1张图片

打开环境,发现一个动图,没有什么东西。

[SWPUCTF 2021 新生赛]WEB刷题记录_第2张图片

题目说它是一个反序列化的漏洞,常规先用御剑扫描一波,扫到了两个,有一个robots.txt

这里我们需要了解robots协议也称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。

[SWPUCTF 2021 新生赛]WEB刷题记录_第3张图片

然后直接访问一下,发现了一些东西。

[SWPUCTF 2021 新生赛]WEB刷题记录_第4张图片

继续访问这个php文件。

[SWPUCTF 2021 新生赛]WEB刷题记录_第5张图片

得到了一大段php代码,审计一下。

它定义了一个名为wllm的类。该类具有两个公共属性:adminpasswd。在类的构造函数中,将admin属性设置为字符串"user",将passwd属性设置为字符串"123456"。

在类的析构函数中,首先检查admin属性是否等于字符串"admin"且passwd属性是否等于字符串"ctf"。如果条件成立,则包含一个名为"flag.php"的文件,并输出其中的变量$flag的值。否则,输出adminpasswd属性的值以及字符串"Just a bit more!"。

最后,从GET请求中获取名为'p'的参数,并将其反序列化为对象。

[SWPUCTF 2021 新生赛]WEB刷题记录_第6张图片

写一个反序列化脚本,构造出来payload:

?p=O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

这个两个博主写的很详细,可以研究一下。

反序列化漏洞详解_一句话木马的博客-CSDN博客

【精选】[CTF]PHP反序列化总结_ctf php反序列化-CSDN博客

直接访问一下就可以得到flag了。

[SWPUCTF 2021 新生赛]WEB刷题记录_第7张图片

14.[SWPUCTF 2021 新生赛]no_wakeup

[SWPUCTF 2021 新生赛]WEB刷题记录_第8张图片

打开环境,发现一个可爱的图片

[SWPUCTF 2021 新生赛]WEB刷题记录_第9张图片

点一下那个???就可以进入下面这个页面,访问class.php文件了。

[SWPUCTF 2021 新生赛]WEB刷题记录_第10张图片

开始进行php代码审计。

它用于创建一个名为HaHaHa的类。该类具有两个公共属性:admin和passwd。在构造函数中,将admin设置为"user",将passwd设置为"123456"。

此外,该类还定义了两个魔术方法:__wakeup()和__destruct()。

__wakeup()方法在对象被反序列化时自动调用,它将passwd属性的值进行SHA1哈希处理。__destruct()方法在对象被销毁时自动调用,它检查admin属性是否为"admin"且passwd属性是否为"wllm",如果满足条件,则包含并输出flag.php文件中的内容;否则,输出passwd属性的值和"No wake up"字符串。

最后,通过$_GET['p']获取URL参数,并将其反序列化为一个对象,然后将其赋值给$Letmeseesee变量。

题目要求GET传入p,并对其反序列化。

题目初始赋值有:

$this->admin ="user";
$this->passwd = "123456";

随后是__wakeup()魔术方法,对passwd进行sha1加密

最后判断$this->admin === "admin" && $this->passwd === "wllm",这里用的是强比较

当返回true时输出flag

我们读懂这些之后。开始构造payload

对于上述代码,我们需要给$this->admin赋值admin,给$this->passwd赋值wllm,同时需要绕过__wakeup()

绕过方法:

序列化字符串中表示对象属性个数的值大于真实的属性个数

写出php代码如下:

admin ="admin";
                $this->passwd ="wllm";
            }
}
$p = new HaHaHa();
echo serialize($p);
?>

[SWPUCTF 2021 新生赛]WEB刷题记录_第11张图片

运行得到:

O:6:"HaHaHa":2:{s:5:"admin";N;s:6:"passwd";N;}

再修改下对象属性个数(大于2即可),最终payload如下:

?p=O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

然后进行访问就可以得到flag了。

[SWPUCTF 2021 新生赛]WEB刷题记录_第12张图片

15.[SWPUCTF 2021 新生赛]easyupload3.0

[SWPUCTF 2021 新生赛]WEB刷题记录_第13张图片

启动环境

[SWPUCTF 2021 新生赛]WEB刷题记录_第14张图片

常规思路,上传一个一句话木马修改成jpg上传。

然后用bp抓包,改成php,然后forward。

[SWPUCTF 2021 新生赛]WEB刷题记录_第15张图片

发现出错了。

[SWPUCTF 2021 新生赛]WEB刷题记录_第16张图片

只能换思路了

[SWPUCTF 2021 新生赛]WEB刷题记录_第17张图片

我们先了解一下htaccess。

htaccess文件是Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮助我们实现:网页301重定向、自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问,禁止目录列表,配置默认文档等功能

.htaccess文件内容SetHandler application/x-httpd-php的意思是设置当前目录所有文件都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则则报错

这里随便访问一个不存在的页面造成Not Found报错,就可以看到服务器信息

我们按照这个思路传一个.htaccess文件。

文件内容如下:


SetHandler application/x-httpd-php

它表示将jpg文件解析为php文件

然后我们直接上传用bp抓包。

上传成功后我们再传个a.jpg即可,里面包含一句话木马的。

[SWPUCTF 2021 新生赛]WEB刷题记录_第18张图片

上传成功之后,然后用蚁剑连接

[SWPUCTF 2021 新生赛]WEB刷题记录_第19张图片

在里面找一下就可以找到flag了。

[SWPUCTF 2021 新生赛]WEB刷题记录_第20张图片

你可能感兴趣的:(前端,android)