SQL注入 ---> Day1 !

终于,我的课程开始讲SQL注入了,对就是那个常年在OWASP上有名的SQL注入

今天是真的冷啊,幸苦的小编还在写csdn                

1.SQL注入原理

SQl注入其实就是将恶意的代码向服务器提交,但是后端又不过滤而引发的漏洞!!比如:

select * from security where username="admin"and password="password"

这个句子就是在向security的表中查找username是admin&&password是password所对应的数据

其中adminpassword是外界传入的参数,像这样:

                  

那如果我们传入恶意参数呢??😊😊 如 admin ' or 1=1 --+ 那么此时的代码是不是就变成了

select * from security where username="admin" or 1=1 --+ password="";

相信可以看出来这里就算不知道账号密码也能进行查询 ,来解释一下这行代码

  • username="admin" or 1=1  这里就算数据库中不存在admin也是对的(因为1=1天然成立)
  • --+ 在sql中--就是注释的意思 这个+用来占位,你可以替换成任意字符,反正要有占位符,所以后面的password不管对不对都被注释掉了,看代码展示也能看见他变成灰色了吧😊😊

2.SQL注入的类型

SQl注入可以分为以下两种类型

  1. 按照数据类型
  • 字符型
  • 数字型

      2. 按照返回结果

  • 报错注入
  • 盲注

今天就先来讲讲第一类

字符型 比如要求我们输入用户名,这种就是字符型 基本格式:

select * from security where username="zhangsan";

这时候我们的检测方法可以有

  • 输入 zhangsan' 如果是字符串类型就会出现以下代码
select * from security where username="zhangsan'  ";

很显然最后一个 " 没有闭合 那么就会报SQL syntax errors 或者页面发生改变

  • 也可以 输入 zhangsan ' and '1' = '2 ,这时候这个查询语句就变成了
select * from security where username="zhangsan" and '1'='2';

这样也是会发生和上面一样的的情况

然后就是数字型注入的检查,相对于字符型就不用考虑这么多了

  • 输入 1 and 1=2  这时候的查询语句就变成了
select * from security where id=1 and 1=2;

这样就会发生报错,但是还有一种检测数字型注入的方法 

  • 输入 1/1 和1/0  (前提是id=1是有值的)如果能正常查询,说明这里不会进行数学运算

就是字符型注入,如果1/1不报错,但是1/0报错,说明进行了数学运算,就是数字型注入

3.MySQL的报错函数 

1.extractvalue()

这个函数的用法

如果在使用 EXTRACTVALUE 函数时出现错误,MySQL 将返回 NULL 值,并且可能会生成一个警告

有意思的就是这个警告,他会返回你的一些函数的报错和NULL,上案例!!!

select extractvalue(1,concat(0x7e,(select user()),0x7e));

 这句代码的意思就是将~select user()~当作路径查询(0x7e是~的十六进制编码),因为~在xpath的语法中式不存在的,所以就会报错,并且执行select user()

2.updatexml()

这个和上面的extractvalue差不多

还是从Xpath下手,就是酱紫~~~

补充,这里为什么要~~来显示呢,完全可以直接select current_user()对吧    哈,那肯定是有原因的!!!!

这个返回值最大长度是32,如果实际中的返回值大于32呢

那就要这样查询了

select updatexml(1,substr(concat(0x7e,(select current_user()),0x7e),1,32),1);

通过控制返回值的长度,如果太长了,那就再输入一次将1改为33就是了

3.GTID_SUBSET(参数1,参数2)

这个函数就是用来判断参数2是不是参数1的子集,如果不是就报错返回false,并且执行参数一

那就:(这里的版本要比5.5高哦)

select gtid_subset(user(),1);

以上就是第一节SQL注入课程的知识点整理了!!!(真好,这就一点了😭😭😭)

                ​​​​​​​        ​​​​​​​        ​​​​​​​        

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2、Line Charts折线图

可视化时间趋势 现在你已经熟悉了编码环境,是时候学习如何制作自己的图表了! 在本教程中,您将学习足够的Python来创建专业外观的折线图。然后,在接下来的练习中,您将使用您的最新技能处理真实世界的数据集。 本课程数据集夸克网盘下载链接:https://pan.quark.cn/s/a235ac…

让二叉树无处可逃

志不立,天下无可成之事。 ——王阳明 二叉树 1、树?什么是树1、1、基本概念1、2、树的相关概念1、3、树的表示方式1、4、树的实际运用 2、二叉树?只有两个分支吗?2、1、基本概念2、2、二叉树的相关定义2、3、二叉树的相关性质2、4…

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有: 获取最后已知位置;获取设备当前位置;获取连续的位置更新;检查设备是否启用了定位服务;计算两个地理坐标之间的距离(米)&am…

Python基础第九篇(Python可视化的开发)

文章目录 一、json数据格式(1).转换案例代码(2).读出结果 二、pyecharts模块介绍三、pyecharts模块入门(1).pyecharts模块安装(2).pyecharts模块操作(1).代码…

UE5 - Polycam扫描文件导入插件

Polycam是利用Gaussian Splatting进行3D重建的3D扫描相关软件,其对应有UE引擎的插件(Plugin_XV3dGS)可以把相关格式的文件导入到引擎; 首先Polycam的官网为:My Captures | Polycam 可以下载各种用户扫描文件&#xff…

第二证券:大金融板块逆势护盘 北向资金尾盘加速净流入

周一,A股商场低开低走,沪指收盘失守2800点。截至收盘,上证综指跌2.68%,报2756.34点;深证成指跌3.5%,报8479.55点;创业板指跌2.83%,报1666.88点。沪深两市合计成交额7941亿元&#xf…

Django代码中的TypeError ‘float‘ object is not callable

学习使用Django进行网页爬取取决于你对Python、Django框架和网络爬虫的熟悉程度。以下是一些关键点,总的来说,如果你已经具备Python和Django的基础知识,并对网页爬虫有一定了解,那么学习使用Django进行网页爬取将会比较容易。如果…

鸿蒙应用开发学习:获取手机位置信息

一、前言 移动应用中经常需要获取设备的位置信息,因此在鸿蒙应用开发学习中,如何获取手机的位置信息是必修课。之前我想偷懒从别人那里复制黏贴代码,于是在百度上搜了一下,可能是我输入的关键字不对,结果没有找到想要…

Bluetooth Device Address(BD_ADDR) - 2

蓝牙核心规范:Core v5.3中关于蓝牙地址的其他说明 Vol 3: Host, Part C: Generic Access Profile 3 User interface aspects 3.2 Representation of Bluetooth parameters 3.2.1 Bluetooth Device Address (BD_ADDR) BD_ADDR 是蓝牙设备使用的地址。在设备发现过…

Docker容器操作 Docker创建并运行Nginx、Redis

容器操作的命令如图: 容器命令 # 创建并运行一个容器,运行成功后会返回容器id docker run# 暂停,将容器挂起,内存暂存,CPU不再执行 docker pause # 恢复运行,内存恢复,CPU恢复 docker unpause#…

设计模式篇章(4)——十一种行为型模式

这个设计模式主要思考的是如何分配对象的职责和将对象之间相互协作完成单个对象无法完成的任务,这个与结构型模式有点像,结构型可以理解为静态的组合,例如将不同的组件拼起来成为一个更大的组件;而行为型更是一种动态或者具有某个…

微信小程序实现长按 识别图片二维码

第一种方案&#xff08;只需要在image里面加一个属性就可以了&#xff09; show-menu-by-longpress“{{true}}” <image show-menu-by-longpress"{{true}}" src"{{sysset.dyqewm}}" />第二种方案 放大预览图片&#xff0c;长按识别二维码 wxml <…

ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>=5.12

一、错误描述 ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>5.12 在用python中的plt包进行绘图时对plt进行了更新&#xff0c;更新之后再运行以前的代码就出现了这个问题。 二、bug消除 &#xff08;一&#xff09;解决方法——升级pyqt包…

【4k】4k的webrtc播放示例

目录 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数

关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

问题&#xff1a; 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本&#xff1a; tarojs: 3.6 react: 18.0 原因&#xff1a; 使用navigateTo() 跳转路由的话并不会销毁页面和组件&#xff0c;会加入一…

2023年第十四届蓝桥杯软件赛省赛总评

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

Portainer Docker容器可视化管理平台实践

Portainer Docker容器可视化管理平台实践 引安装登录Remote ENV 实践 引 平常用docker命令操作比较多&#xff0c;找了一款docker可视化工具&#xff0c;方便快速预览和批量操作&#xff0c;不想一行一行敲的时候&#xff0c;可以偷偷懒。Portainer试用了一下&#xff0c;安装…

二分法——C++

二分分为整数二分和浮点数二分&#xff0c;其中比较复杂的是整数二分&#xff0c;简单一点的是浮点数二分。 我们首先来说明整数二分,主要来讲解模板。 整数二分&#xff1a; 我们先来说一说使用二分法的前提&#xff0c;要有单调性&#xff0c;然后可以根据某种性质来划分成…

C#winform上位机开发学习笔记5-串口助手的定时发送功能添加

1.功能描述 选择自动发送功能后&#xff0c;按照设定的发送时间发送发送框中的信息数据&#xff0c;设定时间可以手动输入&#xff0c;当手动输入信息无效&#xff08;非数字&#xff09;时&#xff0c;系统弹出错误提示&#xff0c;并将其设置为默认定时时间。 2.代码部分 步…

不同知识表示方法与知识图谱

目录 前言1 一阶谓词逻辑1.1 简介1.2 优势1.3 局限性 2 产生式规则2.1 简介2.2 优势2.3 局限性 3 框架系统3.1 简介3.2 优势3.3 局限性 4 描述逻辑4.1 简介4.2 优势4.3 局限性 5 语义网络5.1 简介5.2 优势5.3 局限性 结语 前言 知识表示是人工智能领域中至关重要的一环&#x…