news 2026/1/29 20:20:44

第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/1/28 17:12:46

UI-TARS-desktop快速入门:云端免配置,1小时1块马上上手

UI-TARS-desktop快速入门&#xff1a;云端免配置&#xff0c;1小时1块马上上手 退休教授想体验最新的AI技术&#xff0c;但又担心家里的旧电脑不兼容&#xff1f;这几乎是所有对新技术感兴趣但设备受限的用户共同的烦恼。好消息是&#xff0c;现在有一种方法可以让你完全绕开硬…

作者头像 李华
网站建设 2026/1/27 22:27:49

大模型学习day01 python基础

1. 虚拟环境的创建kyai4 为虚拟环境名&#xff0c;python3.10为python的版本&#xff0c;python3.12不向下兼容2.x开始安装 此时说明安装完成。接下来可以和PyCharm做关联创建虚拟环境的作用 1base包太多&#xff0c;打开加载很慢&#xff0c;2python兼容性不好&#xff0c;一个…

作者头像 李华
网站建设 2026/1/26 20:01:01

GLM-ASR-Nano-2512性能瓶颈:识别与优化5步法

GLM-ASR-Nano-2512性能瓶颈&#xff1a;识别与优化5步法 1. 引言&#xff1a;为何关注GLM-ASR-Nano-2512的性能瓶颈 1.1 模型背景与技术定位 GLM-ASR-Nano-2512 是一个基于Transformer架构的开源自动语音识别&#xff08;ASR&#xff09;模型&#xff0c;拥有15亿参数&#…

作者头像 李华
网站建设 2026/1/26 6:37:43

IndexTTS-2-LLM + Sambert双引擎部署案例:高可用语音系统

IndexTTS-2-LLM Sambert双引擎部署案例&#xff1a;高可用语音系统 1. 引言 随着人工智能技术的不断演进&#xff0c;文本到语音&#xff08;Text-to-Speech, TTS&#xff09;系统在智能客服、有声内容生成、无障碍阅读等场景中扮演着越来越重要的角色。传统的TTS系统虽然能…

作者头像 李华
网站建设 2026/1/29 12:45:47

模拟电子技术基础:反馈放大电路的核心概念解析

模拟电子技术基础&#xff1a;反馈放大电路的工程智慧与实战解析你有没有遇到过这样的问题&#xff1f;——精心设计的放大器&#xff0c;增益明明算好了&#xff0c;可一上电测试&#xff0c;输出波形不是失真就是自激振荡&#xff1b;温度一变&#xff0c;增益又漂了几十个百…

作者头像 李华
网站建设 2026/1/26 18:10:23

基于FSMN-VAD的会议记录系统:自动切分发言片段教程

基于FSMN-VAD的会议记录系统&#xff1a;自动切分发言片段教程 1. 引言 在现代会议场景中&#xff0c;长录音文件的处理往往面临效率低、人工标注耗时等问题。如何从一段包含多人发言、静音间隔和背景噪声的音频中&#xff0c;精准提取出有效的语音片段&#xff0c;是语音识别…

作者头像 李华