news 2026/9/2 22:12:39

第27天 安全开发-PHP应用TP框架路由访问对象操作内置过滤绕过核心漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第27天 安全开发-PHP应用TP框架路由访问对象操作内置过滤绕过核心漏洞

第27天 安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞

thinkphp5.1

application/ └── index/ ← 模块名 index └── controller/ ← 控制器目录(不参与 URL) └── Index.php ← 控制器文件
index.php / 模块 / 控制器 / 方法 访问:index.php / index / Index / index app\index\controller\Index::index()

测试代码
http://thinkphp5.com/index.php/index/index/hello/name/112719413
<?phpnamespaceapp\index\controller;usethink\Request;classIndex{publicfunctionindex(){return123;}publicfunctionhello(Request$request){return'hello,'.$request->param('name');}}

可以添加test目录进行测试

MVC

model view controller

模版 视图 控制器

MySQL测试
<?phpnamespaceapp\test\controller;usethink\Db;usethink\Request;classTest{publicfunctionindex(){return'nskjkdbksbd';}publicfunctionhello(Request$request){return'7777,'.$request->param('name');}publicfunctiontestsql(){$id=request()->param('x');$data=Db::table('new')->where('id',$id)->select();returnjson($data);}}
http://thinkphp5.com/index.php/test/test/testsql/x/1 http://thinkphp5.com/index.php/test/test/testsql/x/1%20or%201=1 内置过滤,只有1的时候有用,如果是"1 and 2=1"之类的没有任何反应

实验结果表名:使用thinkphp有内置过滤,比原生态代码强,防止SQL注入

1、使用TP框架操作数据库 默认是收到框架内置过滤保护

2、原生态的数据库操作 如果没有过滤就会受到SQL注入攻击

文件上传

在之前的test/controller/Test.php 改成下面代码

<?phpnamespaceapp\test\controller;usethink\Db;usethink\Request;publicfunctionupload(){// 获取表单上传文件 例如上传了001.jpg$file=request()->file('image');// 移动到框架应用根目录/uploads/ 目录下$info=$file->validate(['size'=>15678,'ext'=>'jpg,png,gif'])->move('../uploads');if($info){// 成功上传后 获取上传信息// 输出 jpgecho$info->getExtension();// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpgecho$info->getSaveName();// 输出 42a79759f284b767dfcb2a0197904287.jpgecho$info->getFilename();}else{// 上传失败获取错误信息echo$file->getError();}}

在public目录里创一个upload.html文件

<formaction="/index.php/test/test/upload"enctype="multipart/form-data"method="post"><inputtype="file"name="image"/><br><inputtype="submit"value="上传"/></form>
http://thinkphp5.com/upload.html 访问上传测试即可
view
view渲染

渲染模板最常用的是控制器类在继承系统控制器基类(\think\Controller)后调用fetch方法,调用格式:

fetch(‘[模板文件]’[,‘模板变量(数组)’])

模板文件的写法支持下面几种:

用法描述
不带任何参数自动定位当前操作的模板文件
[模块@][控制器/][操作]常用写法,支持跨模块
完整的模板文件名直接使用完整的模板文件名(包括模板后缀)

下面是一个最典型的用法,不带任何参数:

<?phpnamespaceapp\index\controller;usethink\Controller;usethink\Request;classIndexextendsController{publicfunctionindex(){return$this->fetch();publicfunctionhello(Request$request){return'hello,'.$request->param('name');}}

表示系统会按照默认规则自动定位模板文件,其规则是:

当前模块/view/当前控制器名(小写)/当前操作(小写).html
application/ └── index/ ← 模块名 index └── controller/ ← 控制器目录(不参与 URL) └── Index.php ← 控制器文件 └── view/ └── index/ └── index.html
访问:http://thinkphp5.com/index.php/index/index/index
view赋值
application/ └── index/ ← 模块名 index └── controller/ ← 控制器目录(不参与 URL) └── Index.php ← 控制器文件 └── view/ └── index/ └── index.html └── test.html

Index.php

<?phpnamespaceapp\index\controller;usethink\Controller;usethink\Request;classIndexextendsController{publicfunctionindex(){// return 123;$this->assign('name','ThinkPHP');$this->assign('email','thinkphp@qq.com');// 或者批量赋值$this->assign(['name'=>'ThinkPHP','email'=>'thinkphp@qq.com']);// 模板输出return$this->fetch('index');//这里可以修改,换成test}}

index.html

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>{$name}</title></head><body>{$email}</body></html>

test.html

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>{$email}</title></head><body>这里是test</body></html>

看安全

1、版本漏洞

版本的内置安全漏洞

2、安全写法

3、半安全+半原生

4、原生写法

弹幕

思路流程,根据抓包获取特征文件,去github或者gitee搜索特征文件,尝试找到源码。对源码进行下载,如果是thinphp则查看版本,去cve找到漏洞进行复现。如果是别的那就自己审计

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 19:52:06

NX二次开发入门指南:掌握Block UI Styler基础操作

从零开始玩转NX二次开发&#xff1a;Block UI Styler实战入门你有没有遇到过这样的场景&#xff1f;设计工程师每天重复创建相同的结构件、一遍遍输入相似的孔参数&#xff0c;或者因为一个建模步骤记不清而反复翻手册。这些问题的背后&#xff0c;其实都可以通过NX二次开发来解…

作者头像 李华
网站建设 2026/9/2 19:51:54

GLM-TTS应用探索:游戏角色配音自动生成可行性验证

GLM-TTS应用探索&#xff1a;游戏角色配音自动生成可行性验证 1. 引言 1.1 游戏音频制作的痛点与挑战 在现代游戏开发中&#xff0c;角色配音是提升沉浸感和叙事质量的关键环节。传统配音流程依赖专业声优录制、后期剪辑与多语言适配&#xff0c;成本高、周期长&#xff0c;…

作者头像 李华
网站建设 2026/9/2 19:52:41

Voice Sculptor源码解析:深入理解LLaSA架构设计原理

Voice Sculptor源码解析&#xff1a;深入理解LLaSA架构设计原理 1. 技术背景与问题提出 近年来&#xff0c;语音合成技术经历了从传统参数化方法到深度学习驱动的端到端模型的演进。尽管TTS&#xff08;Text-to-Speech&#xff09;系统在自然度和表现力方面取得了显著进步&am…

作者头像 李华
网站建设 2026/9/2 22:12:08

二叉搜索树

1. ⼆叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结…

作者头像 李华
网站建设 2026/9/2 22:18:40

Whisper Large v3 GPU监控:nvidia-smi使用详解

Whisper Large v3 GPU监控&#xff1a;nvidia-smi使用详解 1. 引言 1.1 业务场景描述 在部署基于 OpenAI Whisper Large v3 的多语言语音识别 Web 服务时&#xff0c;GPU 资源的高效利用和实时监控是保障系统稳定运行的关键。Whisper Large v3 模型参数量高达 1.5B&#xff…

作者头像 李华
网站建设 2026/9/2 19:37:01

ms-swift+LoRA实战:没显卡也能微调大模型

ms-swiftLoRA实战&#xff1a;没显卡也能微调大模型 你是不是也遇到过这种情况&#xff1a;看到一篇论文里用LoRA微调大模型效果惊艳&#xff0c;自己也想动手复现&#xff0c;结果刚一运行就提示“CUDA out of memory”&#xff1f;明明只是想做个小实验&#xff0c;可本地4G…

作者头像 李华