文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
环境Thinkphp6.0.12LTS(目前最新版本);
PHP7.3.4 。
安装composer create-project topthink/think tp6
测试代码
漏洞分析漏洞起点不是__desturct
就是__wakeup
全局搜索下 , 起点在vendor\\topthink\\think-orm\\src\\Model.php
只要把this->lazySave
设为True
就会调用了save
方法 。
跟进
【一>所有资源关注我 , 私信回复“资料”获取<一】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
save
方法 , 漏洞方法是updateData
, 但需要绕过①且让②为True
①调用isEmpty
方法 。public function save(array $data = https://mparticle.uc.cn/api/[
string $sequence = null): bool
{
// 数据对象赋值
$this->setAttrs($data);
if ($this->isEmpty() || false === $this->trigger('BeforeWrite')) {
return false;
$result = $this->exists ? $this->updateData() : $this->insertData($sequence);
跟进
isEmpty
方法只要$this->data
不为空就行 。$this->trigger
方法默认返回就不是false
, 跟进updateData
方法 。 漏洞方法是checkAllowFields
默认就会触发 。protected function updateData(): bool
{
// 事件回调
if (false === $this->trigger('BeforeUpdate')) {
return false;
$this->checkData();
// 获取有更新的数据
$data = https://mparticle.uc.cn/api/$this->getChangedData();
if (empty($data)) {
// 关联更新
if (!empty($this->relationWrite)) {
$this->autoRelationUpdate();
return true;
if ($this->autoWriteTimestamp && $this->updateTime) {
// 自动写入更新时间
$data[$this->updateTime
= $this->autoWriteTimestamp();
$this->data[$this->updateTime
= $data[$this->updateTime
;
// 检查允许字段
$allowFields = $this->checkAllowFields();
跟进
checkAllowFields
方法 , 漏洞方法是db
, 默认也是会触发该方法 , 继续跟进 。protected function checkAllowFields(): array
- 魅族|地推拉新赚钱最全攻略,线下推广必知
- iPhoneSE|iPhone SE3 定价或创苹果史上最低,三千不到就能买 5G iPhone
- 鼠标|上手一加10Pro胖达白版,各大媒体一致反馈:白色控最佳选择
- 摄像头|最高24GB+1TB,屏下摄像头+135W快充,仅4799元起一天后正式首销
- 笔记本|Win11预览版全新触控体验,增香二合一笔记本,这款成了最优选
- 大木博士|宝可梦官方正式公开系列最新作品:《宝可梦 朱/紫》
- Python|8天卖出102万台,三星史上最畅销手机诞生
- 机械键盘|口碑最好的两款千元机,目前都在降价,这价格真香
- iPhone|几乎没有“差评”,2022年最值得考虑的4款手机,看看你怎么选?
- 需求|需求评审几个最常见的坑