一、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、进入题目搭建的靶场后画面显示如下:
这是一个文件上传方向的漏洞,利用该漏洞点上传木马进行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、按F12查看文件上传的路径
可以得到 http://61.147.171.105:58808/uploads/index.php
7、利用蚁剑连接,挂载URL,查看文件
但是虽然连接成功,但是却还是报错无法通过后门看到对面服务器内的文件。。。原因也不知道
8、没办法了,尝试了一下用view-source协议来执行木马,使用方法为 view-source:URL
终于成功拿到flag:cyberpeace{5b1bc0e71c306313702d47d9380d373f}
标签:Web,php,文件,flag,ini,WP,序列化,上传,XCTF From: https://www.cnblogs.com/gsh23/p/17233379.html