ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

论剑场web21 php伪协议+反序列化

2020-10-11 10:34:35  阅读:305  来源: 互联网

标签:文件 php web21 class admin user file 序列化 论剑


1. 看到题目,提示不是admin;查看源码发现部分PHP代码,审计PHP代码。
a. 这里需要输入两个参数user和file。user值需要满足不为空,并且经过函数去取文件file_get_contents($user,'r')后,需要为字符串形式的admin。
b. 文件包含了$file的值,并提示包含值应该为class.php

2. 根据include()文件包含,可以想到的是用php伪协议读取文件,所以参数file=php://filter/read=convert.base64-encode/resource=class.php || index.php 这里读取index.php和class.php的源码;而对于参数user需要满足这个file_get_contents($user,'r')==="admin")。
3. 如果让参数user的值为一个字符串,当file_get_contents($user,'r'),如果找不到该文件,其结果为false,就算可以找到文件也不能确定文件转换为字符串之后为admin,所以这里考虑到使用php://input协议。php://input协议可以对没有经过处理的post参数值进行文件读写操作。故参数user=php://input,并且传递一个post参数 admin。

4. 获取到index.php和class.php 经过base64加密过的源码。解密后继续审计代码。
a. index.php中文件包含结束后,要对参数$pass的值进行反序列化,并输出反序列化后的类$pass
b. class.php的Read类中toString()函数,将文件转换成字符串,并输出。并提示应读取的文件为fla9.php

5. 构造payload,对于参数user,其值继续为php://input并传递一个post值admin;对于参数file=class.php,将class.php文件包含进来;对于参数pass应该为Read序列化后的字符串,并且其变量$file值应为fla9.php。

 

 


6. 在其源码中获得flag

标签:文件,php,web21,class,admin,user,file,序列化,论剑
来源: https://www.cnblogs.com/ersuani/p/web21.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有