SQL注入(SQL lnjection Base)21

news/2024/12/23 19:16:07/

SQL注入(SQL lnjection Base)

sql-labs靶场的搭建

GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.SQLI labs to test error based, Blind boolean based, Time based. - Audi-1/sqli-labsicon-default.png?t=O83Ahttps://github.com/Audi-1/sqli-labs.git

下载sql-labs的压缩包

打开小皮打开localhost的根目录

解压缩后将名字改为sqli方便一点

查询本地ip,打开小皮里面的apche和mysql

创建站点成功

 再打开自己的本地ip后面跟后缀/sqli就可以进入页面

点击setup对数据库的连接

打开sqli里面的connection文件更改里面账号以及密码,改为自己当前数据库的账号密码

打开页面就可以显示以下内容

这里我们要选择php为5的版本才能打开

insert into USER
    (
    id,name,sex,birthday,job)
    VALUES
    (
    1,'ss','male','2004','students')
    ;

insert into USER
    (
    id,name,sex,birthday,job)
    VALUES
    (
    1,'ss','male','2004-12-02','students')
    ;

判断这是字符型,将id=1 and 1=2 判断为一整个整体

如果是数字型,这里我们输出id=2-1显示的结果应该是id=1的结果

这里是level2,我们先判断id=1的时候输出的name和password

这里是我们输出level2输出的数值

我们发现当输出id=2-1的时候输出的是id=1的值,所以我们判断这是数字型注入

数字型不需要闭合符号闭合,字符型需要闭合符号闭合

判断闭合符号

right syntax to use near ''2'' LIMIT 0,1' at line 1

其中我们分析有五个单引号,单引号的分布应该是' '2' ' LMIT 0.1'

也就是第一个和最后一个对应,2里面多了一个单引号

这里是我们输入1'后报错的内容

他是数字型函数所以没有闭合符号

改到less8来输入内容查看闭合信息

在后面加一个'号,发现没有值输出,说明出现错误,我们通过注释符号可以将其注释

注释符号分别有--+,#或%23

union联合注入

http://localhost/sqli/Less-1/?id=1' union select database()--+

联合注入需要查询前面的列是多少列

group by 二分法判断默认页面数据列数量

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

这里的123只是为了保证数列等于三

查询回显位

http://192.168.153.1/sqli/Less-1/index.php?id=-1' union select 1,2,3--+

2号位和3号位可以回显

http://192.168.153.1/sqli/Less-1/index.php?id=-1' union select 1,2,database()--+

① version() – 数据库版本
② user() – 数据库用户
③ database() – 当前所在数据库
④ current_user() – 当前用户名
⑤ system_user() – 系统用户名
⑥ session_user() – 连接到数据库的用户名
⑦ @@basedir – 数据库的安装目录
⑧ @@datadir – 数据库文件存放目录

SQL注入是一种常见的Web应用程序漏洞,攻击者利用该漏洞向应用程序的数据库发送恶意的SQL查询,以获取敏感信息、修改数据或执行其他恶意操作。下面是关于SQL注入的说明以及如何进行和防范:

数据库:一个存放数据的库;分 为关系型数据库和非关系型数据库

通过命令docker pull mysql:5.7下载好数据库

docker run --name sqlinjectmysql -d -p 4001:3306 -e MYSQL_ROOT_PASSWORD=123 5107333e08a8  #Mysql image id
 

运行进入数据库

1.SQL注入的原理:


2.SQL注入利用应用程序对用户输入数据的不正确处理,将恶意的SQL代码注入到应用程序的数据库查询中。
3.攻击者通过在输入字段中插入恶意代码,改变SQL查询的逻辑,从而绕过身份验证、获取敏感数据或执行未经授权的数据库操作。


4.SQL注入攻击的实施:


5.Union注入:常用于获取额外的数据库信息,攻击者可以在查询中添加UNION语句,将两个表的数据合并输出。
6.Boolean-based注入:利用逻辑判断条件,通过观察页面的返回结果来判断数据库中的信息。
7.Error-based注入:利用数据库错误信息暴露数据库结构和数据信息。
8.Blind注入:攻击者无法直接获取数据返回结果,但可以通过不同的条件检测来推断数据。


9.判断SQL语句闭合符:


10.在进行SQL注入时,攻击者通常需要找到SQL语句中可以插入恶意代码的位置。判断SQL语句闭合符(通常是单引号')是一种重要的技术。
11.通过在输入字段中插入专门设计的字符(如单引号),观察应用程序的响应是否异常,可以帮助判断SQL语句中是否存在闭合符号。如果应用程序报错,可能表示注入点存在。

在防范SQL注入方面,有一些常用的做法:

12.使用参数化查询(Prepared Statements)来过滤用户输入,避免直接拼接SQL查询。
13.对用户输入进行输入验证和过滤,确保只接受预期的数据。
14.最小化应用程序的特权级别,限制应用程序对数据库的访问权限。
15.定期更新应用程序和数据库管理系统,确保应用程序所用的软件版本已修复已知的SQL注入漏洞。

在编写和设计Web应用程序时,应该时刻警惕SQL注入等漏洞的存在,采取有效的措施来防范和减少安全风险。


http://www.ppmy.cn/news/1557542.html

相关文章

MFC/C++学习系列之简单记录12——文件操作

MFC/C学习系列之简单记录12——文件操作 前言文件操作处理具体使用CFileDialog类 CFile类和CStdioFile类错误总结 前言 学习MFC的文件处理操作! 文件操作处理 CFileDialog类:对话框类,获取选择的文件信息。CFile类:抽象类&#…

Redis生产实践中相关疑问记录

1. Redis相关疑问 1.1. redis内存使用率100% 就等同于redis不可用吗? 正常使用情况下,不是。 redis有【缓存淘汰机制】,Redis 在内存使用率达到 100% 时不会直接崩溃。相反,它依赖内存淘汰策略来释放内存,确保系统的…

数据结构---------二叉树前序遍历中序遍历后序遍历

以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例&#xff0c;包括递归和非递归&#xff08;借助栈实现&#xff09;两种方式&#xff1a; 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…

了解 SpringMVC 请求流程

文章目录 1. Spring 基础 - SpringMVC 请求流程1.1 引入1.2 什么是 MVC1.3 什么是 Spring MVC1.4 请求流程核心架构的具体流程步骤补充 1.5 案例**Maven 包引入****业务代码的编写**DaoServiceControllerwebapp 下的 web.xmlspringmvc.xmlJSP 视图 2. Spring 进阶 - Dispatcher…

39.在 Vue3 中使用 OpenLayers 导出 GeoJSON 文件及详解 GEOJSON 格式

一、引言 在 Web 地图开发领域&#xff0c;Vue3 作为一款流行的前端框架&#xff0c;结合强大的 OpenLayers 地图库&#xff0c;能够实现丰富多样的地图功能。其中&#xff0c;将地图数据以 GeoJSON 格式导出是一项常见且实用的需求&#xff0c;本文将深入探讨如何在 Vue3 环境…

【day11】面向对象编程进阶(继承)

概述 本文深入探讨面向对象编程的核心概念&#xff0c;包括继承、方法重写、this和super关键字的使用&#xff0c;以及抽象类和方法的定义与实现。通过本文的学习&#xff0c;你将能够&#xff1a; 理解继承的优势。掌握继承的使用方法。了解继承后成员变量和成员方法的访问特…

iPhone恢复技巧:如何从 iPhone 恢复丢失的照片

在计算机时代&#xff0c;我们依靠手机来捕捉和存储珍贵的回忆。但是&#xff0c;如果您不小心删除或丢失了手机上的照片怎么办&#xff1f;这真的很令人沮丧和烦恼&#xff0c;不是吗&#xff1f;好吧&#xff0c;如果您在 iPhone 上丢失了照片&#xff0c;您不必担心&#xf…

大模型技术优化负载均衡:AI驱动的智能化运维

在现代信息技术环境中&#xff0c;负载均衡是确保系统稳定、高效运行的关键技术。随着大模型技术&#xff08;Large Model Technology, LMT&#xff09;的发展&#xff0c;AI驱动的智能化负载均衡成为了优化系统性能、提升用户体验的重要手段。本文将详细介绍如何使用Python实现…