
[安洵杯 2019]iamthinking
发布日期:2021-05-15 06:55:08
浏览次数:92
分类:精选文章
本文共 1274 字,大约阅读时间需要 4 分钟。
安洵杯2019比赛中,我遇到了一个关于ThinkPHP反序列化的题目。题目提示"你没有权限访问这个资源",于是我尝试寻找是否有备份文件。在进一步分析中,我发现从备份文件中可以获取ThinkPHP6.0版本的源码。通过审计源码,我构造了ThinkPHP6反序列化的方法,同时需要绕过parse_url这一安全机制。
在解决问题过程中,我选择了一个特定的技术方案:通过创建代理类模型来实现 UNSIGNED PHP'S TS-stringSerialize后的数据处理。这样,能够绕开default notice若想确保应用安全,通常会采取文件未读取等措施,这也是常见的Web开发安全模式。
在实际实现中,我定义了以下类和接口:
namespace think { use think\model\concern\Attribute; use think\model\concern\Conversion; use think\model\concern\RelationShip; abstract class Model { use Conversion; use RelationShip; use Attribute; private $lazySave; protected $table; public function __construct($obj) { $this->lazySave = true; $this->table = $obj; $this->visible = array(array('hu3sky' => 'aaa')); $this->relation = array("hu3sky" => 'aaa'); $this->data = array("a" => 'cat /flag'); $this->withAttr = array("a" => "system"); } }}
针对该问题,如果您仍然对防止未授权访问感兴趣,可以通过限制一定的访问权限或采用基于角色的访问控制(RBAC)来提升应用安全性。此外,定期进行代码审查和测试,也是确保系统安全的重要措施。
在实际编码中,我还需要额外的步骤来密封这些功能,以确保未授权访问无法触发。例如,可以对特定的路由或控制器进行权限划分。通过这些管理措施,我成功实现了安全性与可用性的平衡,使系统在防止未经授权访问的同时,不影响正常业务流程的进行。
最终,通过结合反序列化技术和合理的应用架构设计,我成功地对该安全问题进行了绕过,并完成了所需的功能实现。这一过程让我对ThinkPHP中的某些高级功能有了更深入的理解,也提升了我在Web应用安全领域的实战能力。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月14日 12时33分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
00013.05 字符串比较
2019-03-12
javaEE003.03 jQuery:基本选择器、层次选择器
2019-03-12
LeetCode: 138. 复制带随机指针的链表(中等)[DFS, 迭代]
2019-03-12
微信小程序 数据列表点击会有提示
2019-03-12
Effective Java 读书笔记
2019-03-12
JVM 学习笔记十三、垃圾回收概述
2019-03-12
Rsync + Intofy 数据实时同步方案
2019-03-12
肯德基点餐系统(课程设计)
2019-03-12
杭电oj day1按各字符的ASCII码从小到大的顺序输出这三个字符。
2019-03-12
浅析deep深度选择器
2019-03-12
用汇编实现8255中断实验
2019-03-13
用汇编实现模数转换实验(ADC0809)
2019-03-13
tomcat启动时遇到Error starting child和404时
2019-03-13
使用jieba时的bug
2019-03-13
SpringBoot使用@Email报错误
2019-03-13
SpringBoot之国际化
2019-03-13