代码审计-PHP专题原生开发SQL注入1day分析构造正则搜索语句执行监控功能定位

挖掘技巧:

-语句监控-数据库SQL监控排查可利用语句定向分析

-功能追踪-功能点文件SQL执行代码函数调用链追踪

-正则搜索-(update|select|insert|delete|).*?where.*=

如何快速的在多个文件代码里面找脆弱:

1、看文件路径

2、看代码里面的变量(可控)

3、看变量前后的过滤

1、Bluecms-CNVD-1Day-常规注入审计分析

审计流程:(update|select|insert|delete|).*?where.*=\

正则-ad_js.php->getone()->无过滤->有输出payload注入

Poc:

ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()

这里我们先创建一个账号

这里想挖sql注入的代码审计漏洞,可以使用正则表达式搜索

只有存在可控变量才有机会挖到漏洞,这里跟踪一下这个$ad_id变量

这里我们跟踪一下调用的函数getone

跟踪过去这里是一个接收sql语句的函数,然后这里有一个query的执行

并且这里也适合挖sql注入,因为这里面有回显

果然这里是一个执行sql语句的方法

这里其实很明显的就是sql注入了

为什么payload是ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()

因为我们在ad_js.php中找到的漏洞点,然后config.php文件中有一个$pre = "blue";这段代码的含义就是我们搜索的数据库前面都带有blue_的前缀,然后这个数据库中一共是7列,或者盲测也可以测试出来是7列,再加上常规sql注入即可

拓展:这里sql注入一般会带有xss漏洞,由于这里没有过滤,那可以尝试xss漏洞

<script>alert(1)</script>

payload:

http://127.0.0.1:83/uploads/ad_js.php?ad_id=1<script>alert(1)</script>

2、emlog-CNVD-1Day-常规注入审计分析

https://www.cnvd.org.cn/flaw/show/CNVD-2018-26200

审计流程:

comment.php->delCommentByIp($ip)->无过滤->构造触发

Poc:

/admin/comment.php?action=delbyip&ip=127.0.0.1%27and(extractvalue(1,concat(0x7e,(select%20user()),0x7e)))%20--+&token=11f3f9cb7e78e3f88e39ea5678939b7d

这里我们翻找了一下,因为这里可控变量太多,并且没有什么具体的sql语句,所以我们查看一下调用的方法、函数等,这里找到一个delComment

这里是关键点,我们传入的ip然后调用的是下面的del方法,我们追踪一下这个del方法

这里就出现了,上面是$ip,也就是我们要传入的值,然后下面一个sql语句,接收我们的值,这里看起来是可控的,因此可能存在漏洞

这里能找到action这个变量的来源,GET传参的一个action

这里执行sql语句并没有回显,所以尝试报错或者延迟注入

这里我们注入会提示权限不足,token error,这里就需要配置上token

这里有报权限不足,那我们追踪一下checkToken这个函数,看一下

这里有一个genToken(),我们想获得token,追踪一下

就在他上面一行的方法,这里面的token值是再cookie里面的,所以后面我们加上一个cookie里面的token

我们加上token再看一下

3、emlog-CNVD-1Day-2次注入审计分析

https://www.cnvd.org.cn/flaw/show/CNVD-2023-65138

https://github.com/fupinglee/MySQLMonitor

https://github.com/cw1997/MySQL-Monitor

审计流程:

数据库监控->user.php无可控->nickname->添加不可控->data.php可控->导出修改导入->触发二次注入

/admin/data.php

导入文件时执行SQL文件中语句,带入Payload

INSERT INTO emlog_user VALUES('110','','$P$BnTaZnToynOoAVP6T/MiTsZc9ZAQNg.',(select version()),'writer','n','','123@qq.com ','','','0','1687261845','1687261845');

/admin/user.php

select查询nickname条件数据,访问触发二次注入

数据库监控

这样自动检查到我们搭建的靶场和数据库之间的交互来找sql注入

这里我们能找到这样一条命令,一条插入,这里插入7个值,所以我们后面二次注入也要构造7个值

就是我们把sql攻击语句写入数据库中查询再次执行

追踪一下这个new User_Model();

这里就是为什么我们打开用户页面会出现的数据,这里就查询数据库里的值,然后显示到页面中

这里我们更改nickname的原因就是$condition随之改动,sql语句也随之改动。

$res = $this->db->query("SELECT * FROM " . DB_PREFIX . "user where 1=1 $condition order by uid desc $limit");
这就是我们页面能获取到数据的sql语句,查询后显示到页面上,那我们改动这个sql语句就会造成注入

因此我们访问用户页面会执行条sql语法,我们用利用的就是这条语句

问题就在这里,我们可以导出数据库文件然后再插入sql攻击语法然后再导入备份

在这里我们插入sql语句

这里就将nickname写成一个查询语句。

查询成功

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

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

相关文章

Linux中:调试器gdb/cgdb的使用

引言在追寻光的路上不断前行&#xff0c;详细介绍Linux下gdb/cgdb的使用。一、准备• 程序的发布方式有两种&#xff0c;默认是 debug 模式和 release 模式。Linux gcc/g编译出来的二进制程序默认是release模式• 要使用gdb调试&#xff0c;必须在源代码生成⼆进制程序的时候加…

【算法】【链表】148.排序链表--通俗讲解

算法通俗讲解推荐阅读 【算法–链表】83.删除排序链表中的重复元素–通俗讲解 【算法–链表】删除排序链表中的重复元素 II–通俗讲解 【算法–链表】86.分割链表–通俗讲解 【算法】92.翻转链表Ⅱ–通俗讲解 【算法–链表】109.有序链表转换二叉搜索树–通俗讲解 【算法–链表…

计算机组成原理:存储系统概述

&#x1f4cc;目录&#x1f4be; 存储系统概述&#xff1a;计算机的“记忆中枢”&#x1f3d7;️ 一、存储系统的层次结构&#xff1a;速度与容量的“黄金平衡”&#xff08;一&#xff09;经典存储层次金字塔&#xff08;二&#xff09;层次结构的设计原则&#xff08;三&…

基于CNN/CRNN的汉字手写体识别:从图像到文字的智能解码

在人工智能浪潮的推动下&#xff0c; handwriting recognition&#xff08;手写识别&#xff09;技术已成为连接传统书写与数字世界的重要桥梁。其中&#xff0c;汉字手写体识别因其字符集的庞大和结构的复杂性&#xff0c;被视为模式识别领域最具挑战性的任务之一。近年来&…

【无人机】无人机用户体验测试策略详细介绍

一、 道&#xff1a;核心测试理念与目标核心理念&#xff1a; 用户体验测试的核心不是寻找功能Bug&#xff0c;而是评估用户在与无人机系统&#xff08;包括飞行器、遥控器、APP&#xff09;交互全过程中的主观感受、操作效率、情感变化和达成目标的难易度。我们的目标是让科技…

@RequiredArgsConstructor使用

spring推荐通过构造方法进行注入&#xff0c;如果需要注入的成员变量较多&#xff0c;手动创建构造方法可能需要频繁修改&#xff0c;这时&#xff0c;可以使用RequiredArgsConstructor。RequiredArgsConstructor是lombok中提供的注解&#xff0c;可以为类中final或者NotNull修…

TA-VLA——将关节力矩反馈融入VLA中:无需外部力传感器,即可完成汽车充电器插入(且可多次自主尝试)

前言 今25年9.13日&#xff0c;我在微博上写道&#xff1a; “我们为何24年起聚焦具身开发呢 23年我们做了一系列大模型应用&#xff0c;发觉卷飞了&#xff0c;c端搞不过大厂的工程迭代 流量获取&#xff0c;b端拼不过大厂的品牌&#xff0c;且大厂外 人人都可以搞 ​然&…

数据驱动破局商业信息不对称:中国商业查询平台的技术实践与方法论心得

前言 在当前中国经济高质量发展的浪潮中,企业数量已突破5000万户(截至2024年数据,延续2021年超5亿用户查询需求的增长趋势),但“企业质量参差、信息不透明”的痛点始终困扰着市场主体——企业合作前怕踩坑、个人求职担心“皮包公司”、投资者规避坏账风险,这些需求的核心…

光谱相机的图像模式

光谱相机通过不同的成像方式获取目标的光谱信息&#xff0c;主要分为以下几种图像模式&#xff1a;一、按成像方式分类‌点扫描模式&#xff08;Whiskbroom&#xff09;‌工作原理&#xff1a;逐点扫描目标区域&#xff0c;每个点获取完整光谱曲线特点&#xff1a;光谱分辨率最…

连接器上的pin针和胶芯如何快速组装?

在连接器生产过程中&#xff0c;pin 针与胶芯的组装是核心环节 —— 人工组装不仅效率低&#xff08;单组耗时约 15-20 秒&#xff09;&#xff0c;还易因对齐偏差导致 pin 针弯曲、胶芯卡滞&#xff0c;不良率高达 3%-5%。针对这一问题&#xff0c;可通过 “机器精准排列 定制…

Zynq-7000与Zynq-MPSoC 的 AXI 接口对比

Zynq 与 Zynq UltraScale MPSoC 的的 AXI 接口对比 1. 总体架构差异Zynq-7000 双核 ARM Cortex-A9 (PS) 7 系列 FPGA (PL)PS–PL 之间主要通过 AXI 总线通讯提供 GP (General Purpose)、HP (High Performance)、ACP (Accelerator Coherency Port) 等接口ZynqMP (UltraScale MP…

关键字 - 第六讲

前文补充#include <iostream> using namespace std;int main() {int a 10;int c 20; // 将变量c定义在switch语句之前switch(a){case 1:{cout << ".........." << endl;cout << c << endl;}break;default:cout << ".....…

Linux相关概念和易错知识点(43)(数据链路层、ARP、以太网、交换机)

目录1.从网络层到数据链路层&#xff08;1&#xff09;MAC地址&#xff08;2&#xff09;IP地址和MAC地址的区别&#xff08;3&#xff09;ARP&#xff08;4&#xff09;不同层之间的关系2.以太网&#xff08;1&#xff09;以太网的帧格式&#xff08;2&#xff09;数据分片的原…

【科研绘图系列】R语言绘制多拟合曲线图

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 加载R包 数据下载 函数 导入数据 数据预处理 画图 总结 系统信息 介绍 本文通过R语言对海洋微生物群落的动态变化进行了深入分析,并通过可视化技术直观展示了不同环境条件下微…

【React】React 哲学

1. 声明式&#xff08;Declarative&#xff09; React 鼓励开发者 描述 UI 应该是什么样子&#xff0c;而不是逐步操作 DOM。 // 声明式 function Greeting({ name }) {return <h1>Hello, {name}</h1>; }不用手动操作 DOM&#xff08;document.getElementById / in…

一、Python开发准备

目录 一、前言 1、什么是python&#xff0c;为什么学习python? 2、python语言的特点&#xff0c;以及应用场景是什么&#xff1f; 二、前期准备 1、下载python 2、右键管理员身份安装 3、将Python环境配置到环境变量中 三、开发工具 1、开发工具介绍 一、前言 1、什么…

Visual Studio 发布项目 win-86 win-64 win-arm win-arm64 osx-64 osx-64 osx-arm64 ...

Visual Studio 发布项目时&#xff0c;常见的目标平台标识符代表不同的操作系统和处理器架构组合[TOC]( Visual Studio 发布项目时&#xff0c;常见的目标平台标识符代表不同的操作系统和处理器架构组合) 以下是详细解释及对比列表&#xff1a;一、基础概念解析二、各平台标识符…

Redis数据结构之Hash

一、Hash类型简介 Redis的Hash类型是 Redis 3.2 版本引入的一个数据结构,它允许你在一个键下面存储多个字段和值。在 Redis 内部,Hash 类型可以有多种底层数据结构来实现,这取决于存储的数据量和特定的使用模式。哈希类型适用于存储对象,例如用户信息、商品详情等。通过使…

【Linux系统】初见线程,概念与控制

前言&#xff1a; 上文我们讲到了进程间信号的话题【Linux系统】万字解析&#xff0c;进程间的信号-CSDN博客 本文我们再来认识一下&#xff1a;线程&#xff01; Linux线程概念 什么是线程 概念定义&#xff1a; 进程内核数据结构代码和数据&#xff08;执行流&#xff09; 线…

计算机视觉与深度学习 | 具身智能研究综述:从理论框架到未来图景

具身智能研究综述:从理论框架到未来图景 文章目录 具身智能研究综述:从理论框架到未来图景 一、定义与核心特征 二、关键技术体系 2.1 感知-运动融合技术 2.2 认知架构 2.3 强化学习进展 三、发展历程与里程碑 3.1 理论奠基期(1990-2005) 3.2 技术探索期(2006-2015) 3.3 …