世安杯 一道关于php反序列化漏洞的题目(php伪协议)

2023-03-26 15:33:35 指南信息 梁佰亿

题目地址:

点进去,看到

没什么信息,因此ctrl+u查看源码:

看到提示,file_get_contents()函数,联想到文件包含漏洞,因此google一波,查到

由于本题:allow_url_include=On

因此可以包含一个远程文件,假设你的云服务IP地址为:xxx

则可以输入

其中a.txt的内容为: the user is admin

用base64解码,得到

看到源码之后,明白了需要使用$file把class.php包含进来,然后把$pass反序列化之后, echo $pass 这句话会执行对象里面的__toString函数,具体的反序列化漏洞查看

因此,接下来只要找到序列化之后的字符串,然后GET给pass就行了

复制class.php的源码到自己的虚拟机上,修改一下

保存之后,通过浏览器访问,得到:

接着把这个序列化字符串赋值给pass,以及用file包含class.php,构造出:

执行之后得到:

发现什么都没有,CTRL+U查看源码

这样就得到了flag;

此外,可以参考我之前的一篇文章 php伪协议的使用[获得webshell]

使用file= php://input ,之后传入一个webshell,再读取f1a9.php

php伪协议(php伪协议写文件) 第1张

伪协议的意思?

伪协议就是假的协议

[ xié yì ]

1.协商。

2.泛指国家、政府、政党、团体或个人间就一定问题经谈判、协商后而达成的共同决定。通常用文件形式来体现。国家和政府间的协议往往采取条约的形式。协议有时也作为条约的一种名称。

PHP绕过open_basedir限制操作文件的三种方法

由于open_basedir的设置对system等命令执行函数是无效的,所以我们可以使用命令执行函数来访问限制目录。

我们首先创建一个目录

且在该目录下新建一个1.txt 内容为abc

再在该目录下创建一个目录命名为b

并且在该目录下创建一个1.php文件内容为

且在php.ini中设置好我们的open_basedir

我们尝试执行1.php看看open_basedir是否会限制我们的访问

执行效果如图

很明显我们无法直接读取open_basedir所规定以外的目录文件。

接下来我们用system函数尝试绕open_basedir的限制来删除1.txt

编辑1.php为

先来看看执行1.php之前的文件情况

执行1.php之后

我们先来了解一下symlink函数

symlink函数将建立一个指向target的名为link的符号链接,当然一般情况下这个target是受限于open_basedir的。

由于早期的symlink不支持windows,我的测试环境就放在Linux下了。

测试的PHP版本是5.3.0,其他的版本大家自测吧。

在Linux环境下我们可以通过symlink完成一些逻辑上的绕过导致可以跨目录操作文件。

我们首先在/var/www/html/1.php中 编辑1.php的内容为

接着在/var/www/中新建一个1.txt文件内容为

再来设置一下我们的open_basedir

在html目录下编辑一个php脚本检验一下open_basedir

执行看下。

意料之中,文件无法访问。

我们执行刚才写好的脚本,1.php

此时tmplink还是一个符号链接文件,它指向的路径是c/d,因此exploit指向的路径就变成了

由于这个路径在open_basedir的范围之内所以exploit成功建立了。

之后我们删除tmplink符号链接文件再新建一个同名为tmplink的文件夹,这时exploit所指向的路径为

由于这时候tmplink变成了一个真实存在的文件夹所以tmplink/../../变成了1.txt所在的目录即/var/www/

然后再通过访问符号链接文件exploit即可直接读取到1.txt的文件内容

当然,针对symlink()只需要将它放入disable_function即可解决问题,所以我们需要寻求更多的方法。

glob是php自5.3.0版本起开始生效的一个用来筛选目录的伪协议,由于它在筛选目录时是不受open_basedir的制约的,所以我们可以利用它来绕过限制,我们新建一个目录在/var/www/下命名为test

并且在/var/www/html/下新建t.php内容为

执行结果如图:

成功躲过open_basedir的限制读取到了文件。

flag在index里

一、提示flag在index里

二、点击连接看一看

三、发现是文件包含

四、直接使用本地php伪协议包含index.php文件

五、Base64解密

发表评论: