代码审计-2 SQL注入
创始人
2024-03-04 14:54:23
0

代码审计之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注入

在这里插入图片描述

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...