代码审计-2 SQL注入

news2024/11/28 11:56:07

代码审计之SQL注入审计流程

  • ThinkPHP框架
    • ThinkPHP的路由
  • PbootCMS
    • PbootCMS留言处存在SQL注入
    • 代码分析

在这里插入图片描述
在这里插入图片描述

ThinkPHP框架

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架

MVC模式的php开发框架
MVC:一种软件架构模式,把系统分为三个部分:模型、视图、控制器

用户从视图处输入数据然后发送数据包到模型处,模型处进行一个逻辑处理,最后发送到控制器对数据进一步处理

结构
在这里插入图片描述

ThinkPHP的路由

ThinkPHP分为两种路由模式,自定义路由和MVC路由

自定义路由:
common/route.php文件中
在这里插入图片描述
例:当在网址访问http://127.0.0.1/index.php/about/1时,其实并不是访问about文件夹下的1这个文件。而是去访问了about中的index方法,scode为参数

为什么访问的是index.php但是会去home中找?

因为index.php中设置了入口文件地址绑定,将index.php这个文件绑定到home这个模块当中
在这里插入图片描述

PbootCMS

PbootCMS留言处存在SQL注入

在线留言出提交留言并抓包

在这里插入图片描述
将参数名改为注入语句,提交

在这里插入图片描述发送数据包后,此处存在注入点,爆出了用户
在这里插入图片描述

代码分析

提交留言的url为index.php/Message/add
我们直接访问此处,回显页面说只允许POST访问
在这里插入图片描述
查看代码此处是MVC的路由,访问的是home/controller/MessageController.php中的add方法
在这里插入图片描述add方法进行跟踪,在add方法中if判断时直接调用了addMessage方法
在这里插入图片描述addMessage方法进行跟踪,此方法为新增留言
设置表为ay_message,然后调用了insert方法对数据库执行插入操作
在这里插入图片描述跟踪insert方法

在查看insert方法前,先补充一下ThinkPHPPOST数据的处理
ThinkPHP会将所有POST提交的数据进行处理,处理的函数在core/function/helper.php中的post函数

此处post函数会将,post方式提交的数据中的一些信息赋值给condition这个数组
然后调用filter函数并进行return
在这里插入图片描述跟踪一下filter函数查看内容
此函数完成的功能是对传入的condition数组中的内容(也就是post方式提交的内容)进行处理
在这里插入图片描述filter函数中,前面主要做的是对数据的格式进行处理,并没有对数据进行安全过滤,在filter函数的最后调用了escape_string函数进行return
在这里插入图片描述

跟踪escape_string函数

此函数首先判断参数是否为空,如果为空就直接返回
如果是数组或对象就递归当前函数,将数组或对象中的所有字符串递归出来

然后对字符串中的危险内容通过preg_replace进行替换、将字符串通过htmlspecialchars函数进行html实体化、然后通过addslashes函数对字符串中的特殊字符加\

此方法从头到尾,只是对post传入的数组中的参数值进行了过滤处理,并没有对参数名进行处理

在这里插入图片描述例子:

post传入的内容为 {user="admin"}

1.假设以数组的格式进入这个函数时
2.第一个if判断不为空,然后第二个if判断为数组
3.将数组中的value,也就是参数值("admin"字符串)进行递归
4.再次进入此函数时,直接匹配了最后的else,对参数值("admim"字符串)进行过滤
5.然后递归结束,将过滤后的参数值("admin"字符串)赋值给了key,也就是(user参数名)

函数结束
直到函数结束后都没对参数名(key)进行过滤

所以POST传入的参数名没有进行过滤

接下来回到之前,去跟踪insert方法
之前POST没有进行过滤,此处也没有过滤直接执行了添加操作的sql语句
在这里插入图片描述
通过seay源码审计工具来监控sql语句执行,此处就是提交留言的sql语句
可在此处将参数值进行闭合进行sql注入

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于OpenDaylight和OVSDB搭建VxLAN网络

1 简介 本文主要介绍基于OpenDaylight子项目OVSDB中的southbound组件来搭建VxLAN网络,包括初始环境搭建和southbound RestConf API调用等。OpenDaylight中的northbound组件也可以用来创建VxLAN网络,但northbound不是基于yang的且OVSDB封装的不好&#x…

overflow属性详解

overflow属性详解_桃花扇J的博客-CSDN博客_overflow属性 原链接 overflow是对溢出内容的处理,有四个属性值visible,hidden,scroll,auto,且可以分别设置overflow-x,overflow-y,需要注意的是&am…

从夜间照明到随动转向速锐得解码比亚迪唐车灯升级改装技术方案

汽车大灯犹如人的眼睛一样,在汽车的正脸,灵魂与窗口一样的存在,我们通过技术手段将汽车大灯升级为更高亮度、更智能化,是从根本解决行车安全问题。行车灯发展了几十年,已经不仅限于满足“夜间照明”的功能,…

lt基站学习总结

目录 1.nanocell基站的介 2.lte的网络结构 2.1 网络实体 2.2 功能划分 2.3功能描述 2.4业务类型 2.5语音回落原理 3 S1接口上用户注册消息的简介 3.1 S1接口的位置 3.2 S1接口的协议栈关系 3.3 S1接口建立实例 4 3g用户附着流程 5. Lte用户开机附着过程 1.nanocell基站…

扫描点读笔搭载北京君正X2000多核异构跨界处理器的案例

外研通云畅VT-S30扫描点读笔搭载北京君正X2000多核异构跨界处理器,X2000多核异构跨界处理器主要面向于智能音频、图像识别、智能家电、智能家居、智能办公等五大领域。CPU采取三核结构,搭载双XBurst2,主频1.2GHz,跨界第三核XBurst…

Vue3.0五问五答

1、Vue 3.0 性能提升主要是通过哪几方面体现的? 响应式系统升级 首先来看一下响应式系统升级。我们都知道Vue2的时候,数据响应式的原理使用的是defineProperty,在初始化的时候会遍历data中的所有成员。通过defineProperty,把对象的…

Clion代码提示功能消失无法标出错误代码

Clion就不用多说了吧,jetbrains永远的神! 初次遇到这个问题也不知道是怎么回事,突然代码写着写着感到十分顺利。要是按照往常,依据jetbrains的强迫症,非要对你写的代码催毛求疵找出有误的地方,或者警告&…

spark安装与入门

下载 https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz Local 模式 将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux,解压 tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module 重命名 cd /opt/module mv spark-3.0.…

Vue3项目搭建教程

找到一个你想要创建Vue项目的目录(本文以C:\Users\XTT\Desktop\新建文件夹\project为例)。在此目录打开命令行,输入以下命令: 回车,如果是第一次用这种方式创建Vue3项目,命令行会提示安装 create-vue 包&…

sharedPtr

shared_ptr 1.以何种方式传递 通过下列方式将 shared_ptr 传递给其他函数: 按值传递 shared_ptr。 这将调用复制构造函数,增加引用计数,并使被调用方成为所有者。 此操作的开销很小,但此操作的开销可能很大,具体取决…

python小游戏编程arcade----坦克动画图片合成

python小游戏编程arcade----坦克动画图片合成前言坦克动画图片合成1、PIL image1.1 读取文件并转换1.2 裁切,粘贴1.3 效果图1.4 代码实现2、处理图片的透明度问题2.1 past 函数的三个参数2.2 注意点12.3 注意点22.4 效果![在这里插入图片描述](https://img-blog.csd…

Android中简单使用aspectj

Android中简单使用aspectj 前言: 面向切面编程(AOP是Aspect Oriented Program的首字母缩写),这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程. 1.简介: 在Android中使用注解…

48、线程

一、线程相关概念: 1、程序(program): 是为完成特定任务、用某种语言编写的一组指令的集合,即我们写的代码。 2、进程: (1)进程是指运行中的程序,比如我们使用QQ&…

✿✿✿JavaScript --- BOM、DOM对象

目 录 一、BOM浏览器对象模型 1.Window窗口对象 (1)与弹出有关的方法 (2)与定时器有关的方法 (3)与打开关闭有关的方法 (4) 获取其他对象的属性 2.Location地址栏对象 3.History历史记录对象 二、DOM文档对象模型 1.Document文档对象 (1)获取Element对象 (2)创建…

如何理解CRC循环冗余校验——图解CRC算法模型和C语言实现

如何理解CRC循环冗余校验 循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)是一种产生定长校验码的算法,主要用来检测或校验数据传输或者保存后可能出现的错误。 它真的太常见了,上至应用软件通信…

Qt QCustomPlot 点状网格线实现和曲线坐标点拾取

Qt QCustomPlot 点状网格线实现和曲线坐标点拾取 文章目录Qt QCustomPlot 点状网格线实现和曲线坐标点拾取摘要我想实现的效果点阵的实现第一版本,使用QPen Style第二版本,通过设置背景第三版本,回到QPen Style取曲线上的点关键字&#xff1a…

[附源码]Python计算机毕业设计Django电影推荐网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【附源码】计算机毕业设计JAVA助农脱贫系统

【附源码】计算机毕业设计JAVA助农脱贫系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

cpu设计和实现(异常和中断)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 异常和中断几乎是cpu最重要的特性。而异常和中断,本质上其实是一回事。很多熟悉mips的朋友,应该都听过这么一个词&#xff…

算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)

算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2291 饿饿!饭饭!2. MT2292 甜甜花的研究3. MT2293 赌…