WP | XCTF上两道Web方向基础题

一、unserialize3

1、进入靶场环境界面如下:

 

是一段Java代码

 

2、题目unserialize给出提示这题的方向是反序列化

关于序列化的概念:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象,而反序列则反之。

这段代码中有一个特殊的函数__wakeup()。unserialize() 反序列化函数会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。因此我们要绕过它

 

3、序列化后得到的结果为 O:4:"xctf":1:{s:4:"flag";s:3:"111";}

 

4、绕过__wakeup()其中的一个方法是修改为大于实际的属性个数,则O:4:"xctf":1:{s:4:"flag";s:3:"111";} 可以改为 O:4:"xctf":2:{s:4:"flag";s:3:"111";},在利用GET请求构造参数/?code=上传

 

成功拿到flag:cyberpeace{d43ef2ffa4752d623eb76b2349eec331}

 

 

二、easyupload

1、进入题目搭建的靶场后画面显示如下:

这是一个文件上传方向的漏洞,利用该漏洞点上传php文件进行查看后台文件甚至getshell。

 

2、从靶场的url /index.php可知它应该会解析PHP代码,因此用记事本用PHP语言写一小段代码,并把它的后缀名改为.php

这里使用了GIF89a图片头文件欺骗,很多时候文件上传功能可能只对文件头一开始那部分做检查,因此上传该文件到web服务器有可能当作gif图片执行,进而执行php代码

 

但是上传文件之后,回显”Your file looks wicked“,果然还是想得太简单了......

查看网页源码毫无收获

 

3、编写一个.user.ini文件(在PHP中,php.ini是配置类文件,而.user.ini实际上是用户可自定义的文件,并且.user.ini 是PHP 支持基于每个目录的 INI 文件配置),使用auto_open_file函数提前加载插入的文件

这个a.jpg也就是刚才的a.php文件,把它的后缀名进行修改

 

4、使用BurpSuite进行抓包,首先上传.user.ini文件

把Content-Type这部分改为image/jpg,然后放包

上传成功了

 

5、同理,把另一份a.jpg文件也上传,同样的上传成功了

 

6、尝试了一下用view-source协议来执行php代码,使用方法为 view-source:URL

终于成功拿到flag:cyberpeace{5b1bc0e71c306313702d47d9380d373f}

 

当然,尝试一下一句话木马,比如说写个 <?php @eval($_POST['2222']); ?> ,并通过蚁剑进行连接然后getshell。

 

posted @ 2023-03-19 15:46  GoxHam23  阅读(143)  评论(0编辑  收藏  举报