news 2026/3/25 22:00:08

第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/3/11 23:34:51

证件照生成器法律指南:合规使用AI,云端方案更安全

证件照生成器法律指南&#xff1a;合规使用AI&#xff0c;云端方案更安全 你有没有遇到过这种情况&#xff1a;公司想上线一个AI证件照生成服务&#xff0c;客户反响很好&#xff0c;但法务团队却迟迟不敢批准&#xff1f;理由很明确——用户上传的照片涉及人脸信息&#xff0…

作者头像 李华
网站建设 2026/3/14 8:36:50

5分钟快速部署Qwen3-Reranker-4B:vLLM+Gradio一站式解决方案

5分钟快速部署Qwen3-Reranker-4B&#xff1a;vLLMGradio一站式解决方案 1. 引言 1.1 业务场景与痛点分析 在当前信息爆炸的时代&#xff0c;文本检索、语义排序和多语言内容理解已成为搜索系统、推荐引擎和智能问答平台的核心能力。传统排序模型往往面临推理延迟高、跨语言支…

作者头像 李华
网站建设 2026/3/14 8:01:17

SGLang部署常见错误:host 0.0.0.0配置问题解决指南

SGLang部署常见错误&#xff1a;host 0.0.0.0配置问题解决指南 1. 引言 随着大语言模型&#xff08;LLM&#xff09;在各类业务场景中的广泛应用&#xff0c;高效、稳定的推理部署成为工程落地的关键环节。SGLang作为专为提升LLM推理性能而设计的框架&#xff0c;在优化吞吐量…

作者头像 李华
网站建设 2026/3/14 11:28:26

verl支持哪些LLM架构?主流模型兼容性测试

verl支持哪些LLM架构&#xff1f;主流模型兼容性测试 1. verl 介绍 verl 是一个灵活、高效且可用于生产环境的强化学习&#xff08;RL&#xff09;训练框架&#xff0c;专为大型语言模型&#xff08;LLMs&#xff09;的后训练设计。它由字节跳动火山引擎团队开源&#xff0c;…

作者头像 李华
网站建设 2026/3/24 3:58:04

BAAI/bge-m3性能测试:不同语言混合处理能力

BAAI/bge-m3性能测试&#xff1a;不同语言混合处理能力 1. 引言 1.1 多语言语义理解的技术背景 随着全球化信息流动的加速&#xff0c;跨语言、多语言内容处理已成为自然语言处理&#xff08;NLP&#xff09;领域的重要挑战。传统的语义相似度模型往往局限于单一语言环境&am…

作者头像 李华
网站建设 2026/3/12 2:39:14

看完就想试!通义千问2.5-7B打造的百万字长文档处理案例

看完就想试&#xff01;通义千问2.5-7B打造的百万字长文档处理案例 1. 引言&#xff1a;为何选择通义千问2.5-7B-Instruct进行长文本处理&#xff1f; 在当前大模型应用场景中&#xff0c;长文档理解与生成能力已成为衡量模型实用性的关键指标。无论是法律合同分析、科研论文…

作者头像 李华