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。

浙公网安备 33010602011771号