学习笔记-SQL注入(sql注入实战教程)
sinye56 2024-09-29 21:55 6 浏览 0 评论
数据库简介
数据库(Database,DB)指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。简单来说可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。
数据库服务器是指用来运行数据库服务的一台电脑。在中小型企业通常为 一台,在数据存储量计算量很大的时候可以存在多台。
数据库,一个数据库服务器里面有可以有多个数据库。
数据表,例如在游戏数据库中,用来区分游戏不同的数据。例如:用户数据 (用户、密码);人物数据;所有装备和装备信息;
数据字段也叫数据列。就是我们日常所见表格里面的列。在表格中,我们 会将一张用户表分成多个列。如下(表一)所示:用户编号、用户名、性别、 年龄是字段。
数据行,真正的数据存在每一个表的行里面。字段(列)划分出来了一个表 应该按照什么样的格式存数据。而行,是真正的数据。每一行需要遵循数据 字段(列)的规范和要求进行存入数据。
SQL就是用于操作数据库的语言,全称为结构化查询语言(Structured Query Language),是一种用于存储、操作或者检索存储在关系型数据库中数据的计算机语言。
SQL注入漏洞原理
服务端没有对用户提交的参数进行严格的过滤,导致可以将SQL语句插入到可控参数中,改变原有的SQL语义结构,从而执行攻击者所预期的结果。
information_schema库介绍
SCHEMATA表
当前 mysql 实例中所有数据库的信息。SHOW DATABASES; 命令就是从这个表获取数据。包括catalog_name、schema_name、等字段。其中schema_name存储所有的库名。
TABLES表
存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。SHOW TABLES FROM XX; 命令从这个表获取结果。 包括table_schema、table_name等字段,其中table_name存储所有的表名,table_schema存储与之对应的数据库名。
COLUMNS表
存储表中的列信息,包括表有多少列、每个列的类型等。SHOW COLUMNS FROMXXX命令从这个表获取结果。 包括table_schema、table_name、column_name等字段,其中column_name存储所有的列名,table_name存储与之对应的表名,table_schema存储与之对应的库名。
union操作符介绍
UNION用于合并两个SELECT的结果集。
Union必须由两条或者两条以上的SELECT语句组成,语句之间使用Union链接 Union中的每个查询必须包含相同的列、表达式或者聚合函数,他们出现的顺序可以不一致(这里指查询字段相同,表不一定一样)
列的数据类型必须兼容,兼容的含义是必须是数据库可以隐含的转换他们的类型
联合查询注入
两个查询语句使用union进行连接时有个前提,必须保证列数一致。所以我们得先判断前面查询的列数。一般判断可以用order by number来判断 例如order by 1即为按第一列进行排序,order by 2即为按第二列进行排序。所以当数字为不存在的列数时,则会报错或与前面显示内容不同。我们可以据此判断列数。
万能密码的构造
假设我们用户名传入admin,密码传入1' or '1,最终的sql语句变成了:select * from userinfo where username='admin' and password='1' or '1' 这时候的判断语句就变成永真式了,所以可以达到不知道用户名密码的前提下登录的目的。
报错注入
利用页面返回的MySQL报错信息,将想得到的数据通过报错信息带出。报错注入利用条件是网站开启了 SQL 报错日志功能,否则无法使用报错注入,具有一定的局限性。报错注入的利用方式和MySQL版本有很大的关联。
sqlmap简介
SQLMAP是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access,IBMDB2, SQLite, Firebird, Sybase和SAP MaxDB。
SQL注入常规防御方式
1) 、对用户输入的特殊字符进行严格过滤,如’、”、<、>、/、*、;、+、-、&、|、(、)、and、or、select、union。
2) 、使用参数化查询(PreparedStatement),避免将未经过滤的输入直接拼接到SQL查询语句中。
3) 、Web应用中用于连接数据库的用户与数据库的系统管理员用户的权限有严格的区分(如不能执行drop等),并设置Web应用中用于连接数据库的用户不允许操作其他数据库。
4) 、设置Web应用中用于连接数据库的用户对Web目录不允许有写权限。
5)、使用Web应用防火墙。
相关推荐
- Xfce桌面环境升级截图工具,支持AVIF和JPEG XL格式
-
IT之家5月20日消息,Xfce团队近日将屏幕截图工具xfce4-screenshooter更新至1.10.4版本,允许用户将截图保存为AVIF和JPEGXL两种无损图像格...
- pyautogui:截图及定位功能_如何截图定位
-
截图函数PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕中查找图像。如果您有一个小图像,例如需要单击并希望在屏幕上找到它的按钮,这将非常有用。这些功能由PyScreeze模块提供,该模块...
- 如何在Ubuntu上释放/boot分区的空间?
-
前几天,我收到一个警告,/boot分区已经几乎满了,没有剩余空间了。?来源:linux.cn?作者:AnkushDas?译者:郑?(本文字数:2868,阅读时长大约:4分钟)前几天,...
- 新Linux木马发现:每30秒截图并用麦克风录音
-
近期在Linux平台发现的木马程序能够定期截图,并可通过已连接的麦克风来录音,不同于通常设计用来攻击Linux端服务器的恶意程序。该木马程序最早被俄罗斯安全公司DoctorWeb发现,他们将其称之为...
- 使用 Rust 实现屏幕截图功能_rust怎么设置快捷键
-
前言在一些网安产品应用程序中,屏幕截图是常见的需求。对于想要使用Rust来进行屏幕截图的开发者,今天我们将介绍如何使用Rust实现屏幕截图功能,捕获屏幕内容并保存为图像文件。本文的目标本文件将...
- Linux中的截图工具 - Flameshot_linux里面比较好的截图工具
-
Flameshot[1]是一款功能强大但易于使用的屏幕截图软件,中文名称火焰截图。Flameshot简单易用并有一个CLI版本,所以你也可以从命令行来进行截图。Flameshot是一个Lin...
- linux/unix中如何使用sed一次替换多个模式
-
文本处理是我们使用linux/unix必须掌握的一项技能。前两篇文章介绍了如何删除文本文件中的空行以及如何删除文本文件中包含指定字符串的行。本文主要介绍如何使用sed命令一次替换多个模式。以下是测试中...
- Linux环境中的shell echo命令使用技巧
-
简介:在平常编写LinuxShell脚本的时候,常常会用到echo命令。这echo命令的作用呢,就是在显示器上显示出一段文字。这个命令挺简单的,可它在脚本编程还有日常的系统管理里,那可是...
- 7 个有趣的 Linux 命令,我10年linux经验都没见过一个
-
Linux命令行可以是高级用户和系统管理员的法宝,Linux不仅仅是枯燥乏味的系统,Linux是由喜欢玩乐的人开发的,他们创建了一系列好玩的命令,当你想要微笑时,试着自己玩这些。1、蒸汽机车(s...
- Linux文本处理三剑客之sed命令全面解析,一文就够了
-
作用sed命令是一个非交互式的行文本编辑器,它能对文件内容进行编辑,默认每次处理文本文件中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把模式空间里面的内容输出到屏幕上,然后把...
- Linux下常用命令及使用方法详解(可收藏!!!)
-
总结有哦福利哦ls文件属性:-:普通文件d:目录文件b:块设备c:字符设备文件l:符号连接文件p:命...
- Python也有“管道”操作,你知道吗?
-
在编程世界中,"管道"是一项充满魅力的功能。像Unix和Linux中的管道一样,Python也有“管道”操作。本文将深入研究Python的管道操作,提供一些示例来帮助你理解和掌握它。什么是管...
- 运维人员常用的 Linux 命令汇总_运维人员常用的 linux 命令汇总表
-
作为运维人员,这些常用命令不得不会,掌握这些命令,工作上会事半功倍,提供工作效率。一.文件和目录1.cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。cd...
- Linux sed 命令详解_linux教程:sed命令的用法
-
简介sed的全称是:StreamEditor流编辑器,在Linux中是一个强大的文本处理工具,可以处理文件或标准输入流。基本语法sed[options]'command'file通过...
- Linux tail命令用法_tail在linux
-
tail命令是Linux/Unix中的一个命令行工具,用于查看文件的最后几行或动态实时查看文件(tail-f)。语法tail[option(s)][file(s)]主要选项--n:指定显示文...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)