看来反序列化要多打点了反序列化这块都不怎么熟~
private属性序列化的时候格式是 %00类名%00成员名
而__destruct()这个魔术方法在每次销毁一个对象时触发。
而 PHP 的特性 「 运行完一次请求则销毁環境 」 的做法反正执行完请求后所有该销毁的都会销毁。
但是我们要把op == 2才能进入read利用
PHP7.1以上的反序列化不会判断里面参数的属性类型了所以可以改成public再进行反序列化,绕过private、protected序列化后产生不可见字符__destruct()方法,当op===“2"时会将"2"变成"1”,可以把op转成int型进行绕过~
因为默认路径改了个名~
linux提供了/proc/self/目录这个目录比较独特,不同的进程访问该目录时获得的信息是不同的内容等价于/proc/本进程pid/。进程可以通过访问/proc/self/目录来获取自己嘚信息
1. maps 记录一些调用的扩展或者自定义 so 文件
3. comm 当前进程运行的程序
然后找到当前的网站根目录配置文件。
不过好像相对路径也可以~
一开始還以为是java上传题后来下载时候发现可能是目录穿越。
比赛的时候和buu的路径不太一样
上传引入我们的vps里的dtd的一个xml的外部实体攻击
上传的攵件满足两个条件:
我在BUU上复现的,BUU靶机只能内网访问所以需要用小号开一个Basic里面的linux靶机
先创建一个xlsx文件,然后改后缀为zip修改里面的[Content_Types].xml文件(先把该文件单独解压出来,修改完后再压进去)
再将文件后缀改为xlsx文件
然后上传我们的xlsx文件就行了
就可以看到靶机上的注入结果了
看来反序列化要多打点了反序列化这块都不怎么熟~
private属性序列化的时候格式是 %00类名%00成员名
而__destruct()这个魔术方法在每次销毁一个对象时触发。
而 PHP 的特性 「 运行完一次请求则销毁環境 」 的做法反正执行完请求后所有该销毁的都会销毁。
但是我们要把op == 2才能进入read利用
PHP7.1以上的反序列化不会判断里面参数的属性类型了所以可以改成public再进行反序列化,绕过private、protected序列化后产生不可见字符__destruct()方法,当op===“2"时会将"2"变成"1”,可以把op转成int型进行绕过~
因为默认路径改了个名~
linux提供了/proc/self/目录这个目录比较独特,不同的进程访问该目录时获得的信息是不同的内容等价于/proc/本进程pid/。进程可以通过访问/proc/self/目录来获取自己嘚信息
1. maps 记录一些调用的扩展或者自定义 so 文件
3. comm 当前进程运行的程序
然后找到当前的网站根目录配置文件。
不过好像相对路径也可以~
一开始還以为是java上传题后来下载时候发现可能是目录穿越。
比赛的时候和buu的路径不太一样
上传引入我们的vps里的dtd的一个xml的外部实体攻击
上传的攵件满足两个条件:
我在BUU上复现的,BUU靶机只能内网访问所以需要用小号开一个Basic里面的linux靶机
先创建一个xlsx文件,然后改后缀为zip修改里面的[Content_Types].xml文件(先把该文件单独解压出来,修改完后再压进去)
再将文件后缀改为xlsx文件
然后上传我们的xlsx文件就行了
就可以看到靶机上的注入结果了
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。