SQL注入-基础知识
目录
前言
一,SQL注入是什么
二,SQL注入产生的条件
三,学习环境介绍
四、SQL注入原理
五,SQL中常用的函数
六,关于Mysql数据库
前言
在网络安全领域中,sql注入是一个无法被忽视的关键点,曾经多少的网站都因此被攻破,直到现在很多网站依旧存在很多sql注入的漏洞和风险点。Sql注入的原理简单,但变化和危害特别严重,属于“上有政策,下有对策”的风险点,也是从事渗透攻防必不可少的一个知识点。本人因近期学习渗透测试相关内容,特此记录学习过程中的笔记,若你也是刚入门渗透安全,或许会有帮助,也希望可以一起交流。
一,SQL注入是什么
SQL注入是一种常见的Web应用程序安全漏洞,攻击者利用该漏洞向应用程序的数据库中插入恶意的SQL查询,从而实现对数据库的非授权访问或执行未经授权的操作。
SQL注入攻击地点主要涉及在用户输入字段中插入或“注入”SQL代码,如果Web应用程序的安全措施不足,这些代码可以被包含在数据库查询中执行。攻击者通过这种方式可以读取、修改或删除存储在数据库中的数据,甚至执行其他恶意操作。这种攻击可能发生在任何接受用户输入并将其直接用于SQL查询的系统上,特别是在输入未经验证或转义的情况下。
防止SQL注入:应该采取参数化查询和存储过程的使用,以及对用户输入进行适当的验证和 转,限制数据库权限和特权
二,SQL注入产生的条件
- 传递给后端的
参数是可以控制的
参数内容会被带入到数据库查询
- 变量未存在过滤或者过滤不严谨
三,学习环境介绍
我本次所有的sql注入笔记都基于sqli-labs靶场进行演示,链接如何安装sqli-labs靶场,sqlilabs是一个印度程序员写的,用来学习 sql 注入的一个游戏教程,sqlilabs需要apache+php+mysql的环境,我使用phpstudy搭建了集成环境
四、SQL注入原理
首先让我们来看一个实例,这是sqlilabs的less-11中post注入的实例,也是我们平时碰到比较多的登录界面,有一个正确的用户名密码对均为Dumb,当我们输入后显示登录成功。
显然这背后的sql逻辑代码为:
SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1;
其中users表是该数据库中存储用户登录信息的表,usernmae和password对应数据库用户名和密码的字段,而$uname和$passwd则是php网页中传入用户名和密码的两个参数。对应于我们使用Dumb登录时,mysql处理的语句就变为:
SELECT username, password FROM users WHERE username='Dumb' and password='Dumb' LIMIT 0,1;
这一句sql语句的含义为从users表中查询用户名和密码都为Dumb的用户(limit 0,1的含义则是控制查询结果,返回第一条记录),并把他的username和password字段值返回。sqlilabs数据库查看后发现执行成功,返回了Dumb的用户名和密码。
mysql查询后返回给php进行逻辑判断,存在记录,因此登录成功,若用户名或密码不正确,则查询不到记录,因此无法登录,这就是登录界面的基本原理,在正常情况下不会出现任何问题。
现在有一个计算机专业的同学张三,他只知道Dumb的用户名,而不知道他的密码,但是他想登录Dumb的账号,是不是没有任何办法了呢?可能有人会说用暴力破解,确实对于这个实例可以暴力破解,但是如果有验证码该怎么办呢,是不是也没有办法了呢?此时张三灵机一动,不按套路出牌,他往用户名输入了这样的一串字符“Dumb’ #”,而密码随便输入了“123456”,这样居然成功登录了,返回和前面一样的界面!这就是最简单的一个sql注入,让我们来看看这里面发生了什么吧。当张三提交输入后,sql语句变成了:
SELECT username, password FROM users WHERE username='Dumb’#' and password='123456' limit 0,1;
把这一句sql语句可以直观的看出“#”起到了注释的作用,将后面的语句全部注释,而’将前面username字段参数的区间闭合,因此构成了一个正确的sql语句,等同于:
SELECT username, password FROM users WHERE username='Dumb’
这一句sql语句的含义为从users表中查询用户名为Dumb的用户,且返回他的username和password字段值,这样屏蔽了对于密码的判断条件,因此成功登录。这便是最简单sql注入的原理了
五,SQL中常用的函数
# 一些SQL注入常用的函数
version() # 查看数据库版本
database() # 查看当前数据库名
user() # 查看当前数据库用户
system_user() # 查看系统用户名concat() # 把数据库中的某列数据或某几列数据合并为一个字符串
group_concat() # 把数据库中的某列数据或某几列数据合并为一个字符串
@@datadir # 查看数据库路径
@@version_compile_os # 查看操作系统
六,关于Mysql数据库
在 MySQL5.0 版本后,MySQL 默认在数据库中存放一个information_schema的数据库,该数据库中包含了当前系统中所有的数据库、表、列、索引、视图等相关的元数据信息,是MySql自身信息元数据的存储库,我们需要记住三个表名,分别是 schemata,tables,columns。
schemata # 存储的是该用户创建的所有数据库的库名,要记住该表中记录数据库名的 字段名为 schema_name。
tables # 存储该用户创建的所有数据库的库名和表名,要记住该表中记录数据库 库名 和表名的字段分别是 table_schema 和 table_name.
columns # 存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录 数据库库名、表名、字段名为 table_schema、table_name、column_name。
# 查询所有的数据库名
select schema_name from information_schema.schemata limit 0,1
# 查询指定数据库security中的所有表名
select table_name from information_schema.tables where table_schema='security' limit 0,1
# 查询指定数据库security中的指定数据表users的所有列名
select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1
相关文章:

SQL注入-基础知识
目录 前言 一,SQL注入是什么 二,SQL注入产生的条件 三,学习环境介绍 四、SQL注入原理 五,SQL中常用的函数 六,关于Mysql数据库 前言 在网络安全领域中,sql注入是一个无法被忽视的关键点,…...
npx 有什么作用跟意义?为什么要有 npx?什么场景使用?
npx 是 npm 从 v5.2.0 开始新增了 npx 命令,> 该版本会自动安装 npx,如果不能使用就手动安装一下: $ npm install -g npxnpx 的作用 npm 只能管理包的依赖,npx 则可以快捷的运用包中的命令行工具和其他可执行文件,…...

Docker搭建LNMP+Wordpress
目录 一.项目模拟 1.项目环境 2.服务器环境 3.任务需求 (1)使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台 (2)限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap (3)限制 Mysql 容器写 /d…...
PCIE相关总结
1、概述 "PCIE 槽位" 指的是主板上的 Peripheral Component Interconnect Express (外围设备互联扩展)槽位。它是用于连接扩展卡(如显卡、网卡、声卡等)到主板的接口。PCI Express 是一种高速串行扩展总线标准ÿ…...

OpenCV 入门(五) —— 人脸识别模型训练与 Windows 下的人脸识别
OpenCV 入门系列: OpenCV 入门(一)—— OpenCV 基础 OpenCV 入门(二)—— 车牌定位 OpenCV 入门(三)—— 车牌筛选 OpenCV 入门(四)—— 车牌号识别 OpenCV 入门…...
C++基础-编程练习题2
文章目录 前言一、查找“支撑数”二、数组元素的查找三、爬楼梯四、数字交换五、找高于平均分的人 前言 C基础-编程练习题和答案 一、查找“支撑数” 【试题描述】 在已知一组整数中, 有这样一种数非常怪, 它们不在第一个, 也不在最后一个&…...

Linux下GraspNet复现流程
Linux,Ubuntu中GraspNet复现流程 文章目录 Linux,Ubuntu中GraspNet复现流程1.安装cuda和cudnn2.安装pytorch3.编译graspnetAPIReference 🚀非常重要的环境配置🚀 ubuntu 20.04cuda 11.0.1cudnn v8.9.7python 3.8.19pytorch 1.7.0…...
Linux——MySQL5.7编译安装、RPM安装、yum安装
文章目录 Linux——MySQL5.7编译安装、RPM安装、yum安装一、编译安装二、RPM安装三、yum安装 Linux——MySQL5.7编译安装、RPM安装、yum安装 卸载mysql # 查看是否安装了mysql [rootcsq ~]# rpm -qa |grep mysql mysql-community-server-5.7.36-1.el7.x86_64 mysql-community-c…...

LSTM递归预测(matlab)
LSTM(长短期记忆)递归预测原理及步骤详解如下: LSTM递归预测(matlab)代码获取戳此处代码获取戳此处代码获取戳此处 一、LSTM递归预测原理 LSTM是一种特殊的递归神经网络(RNN),它能够…...

计算机网络 备查
OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元(PDU)和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段,并加上TCP头 4.网络层添加IP地址信息…...
查看软件包依赖关系
列出软件包依赖文件列表 rpm -ql 命令用于列出已安装软件包的文件列表。它显示软件包中包含的文件及其对应的路径。 具体来说,-q 选项表示查询已安装的软件包,而 -l 选项表示列出软件包中的文件列表。 例如,如果要查看已安装的 nginx 软件…...
C++ 中 strcmp(a,b) 函数的用法
【C 中 strcmp(a,b) 函数的用法】 ● 若 len(a)>len(b),则返回1。 ● 若 len(a)len(b),则返回0。 ● 若 len(a)<len(b),则返回-1。【C 中 strcmp(a,b) 函数的用法代码一】 #include <bits/stdc.h> using namespace std;int main…...

Servlet(一些实战小示例)
文章目录 一、实操注意点1.1 代码修改重启问题1.2 Smart Tomcat的日志1.3 如何处理错误 一. 抓自己的包二、构造一个重定向的响应,让页面重定向到百度主页三、让服务器返回一个html数据四、表白墙4.1 约定前后端数据4.2 前端代码4.3 后端代码4.4 保存在数据库的版本…...

【JVM】垃圾回收机制(Garbage Collection)
目录 一、什么是垃圾回收? 二、为什么要有垃圾回收机制(GC)? 三、垃圾回收主要回收的内存区域 四、死亡对象的判断算法 a)引用计数算法 b)可达性分析算法 五、垃圾回收算法 a)标记-清除…...
C++中的priority_queue模拟实现
目录 priority_queue模拟实现 priority_queue类定义 priority_queue构造函数 priority_queue类push()函数 priority_queue类pop()函数 priority_queue类size()函数 priority_queue类empty()函数 priority_queue类top()函数 仿函数与priority_queue类模拟实现 仿函数 …...
【Kafka】1.Kafka核心概念、应用场景、常见问题及异常
Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,后成为 Apache 软件基金会的顶级项目。 它主要用于构建实时数据管道和流式应用程序。它能够高效地处理高吞吐量的数据,并支持消息发布和订阅模型。Kafka 的主要用途包括实时分析、事件源、…...
LTE的EARFCN和band之间的对应关系
一、通过EARFCN查询对应band 工作中经常遇到只知道EARFCN而需要计算band的情况,因此查了相关协议,找到了他们之间的对应关系,可以直接查表,非常方便。 具体见: 3GPP TS 36.101 5.7.3 Carrier frequency and EAR…...

解决问题:Docker证书到期(Error grabbing logs: rpc error: code = Unknown)导致无法查看日志
问题描述 Docker查看日志时portainer报错信息如下: Error grabbing logs: rpc error: code Unknown desc warning: incomplete log stream. some logs could not be retrieved for the following reasons: node klf9fdsjjt5tb0w4hxgr4s231 is not available报错…...
【C语言】预处理器
我们在开始编写一份程序的时候,从键盘录入的第一行代码: #include <stdio.h>这里就使用了预处理,引入头文件。 C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一…...
QtConcurrent::run操作界面ui的注意事项(2)
前面的“QtConcurrent::run操作界面ui的注意事项(1)”,末尾说了跨线程的问题,引出了Qt千好万好,就是跨线程不好。下面是认为的最简单的解决办法:使用QMetaObject::invokeMethod(相比较信号-槽&a…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...

【学习记录】Office 和 WPS 文档密码破解实战
文章目录 📌 引言📁 Office 与 WPS 支持的常见文件格式Microsoft Office 格式WPS Office 格式 🛠 所需工具下载地址(Windows 官方编译版)🔐 破解流程详解步骤 1:提取文档的加密哈希值步骤 2&…...