sql注入学习笔记
1.什么是SQL注入
SQL注入就是指web应用程序对用户输入的数据的合法性没有判断,前端传入后端的参数带有数据库查询的语句,攻击者可以构造不同的SQL语句来实现对数据库的操作。
2.SQL注入原理
SQL注入漏洞产生需要满足以下两个条件。
-->参数用户可控,前端传给后端的参数内容是用户可以控制的
-->参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。
当传入id参数为1'时,数据库执行的代码如下。
select * from users where id = 1'
这不符合数据库的语法规范,所以会报错,当传入id参数为1 and 1=1 时,执行的语句如下。
select * from users where id = 1 and 1=1
这时候是where语句中,id = 1为真,1 = 1也为真,所以页面会返回与id=1相同的结果,当传入的参数后面为 and 1 = 2时,由于1 = 2不成立,所以返回假,就会返回与id=1不同的结果。
由此就可以判断ID参数存在SQL注入漏洞。
因此开发者需秉持“外部数据皆不可信”的原则进行开发。
3.MYSQL注入相关的知识点
在mysql5.0版本之后,mysql默认在数据库中存放了一个information_schema的数据库。在该库中需要记住的表名有:SCHEMATA 、TABLES、COLUMNS。
SCHEMATA表存储该用户创建的所有数据库的库名如下图所示。
我们只需要记住该表中记录数据库名字的字段名为SCHEMA_NAME。
TABLES表存储了该用户创建的所有数据库的库名和表名,如下图所示
需要记住的字段名分别为TABLES_SCHEMA和TABLE_NAME。
COLUMNS表存储该用户创建的所有数据库的库名,表名和字段名,如下图所示。
需要记住的字段名有TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME。
1.mysql查询语句
select 查询的字段名 from 库名.表名
select 要查询的字段名 from 库名.表名 where 已知条件的字段名 = '已知条件的值'
select 要查询的字段名 from 库名.表名 where 已知条件的字段名 = '已知条件的值' and 已知条件2的字段名 = '已知条件2的值'
2.limit的用法
limit使用格式为 limit m,n 其中m时记录开始的位置,从0开始取一条记录就是limit 0,1,这就是取出提一条记录
3.需要记住的几个函数
database() 当前网站使用的数据库
version() 当前mysql的版本
user() 当前mysql的用户
4.注释符
在mysql中常见的注释符的表达方式为 #、--空格、/**/
5.内联注释
内联注释的形式:/* !code */。内联注释可以用于整个SQL语句中,来执行我们的SQL语句。
sql注入学习笔记的更多相关文章
- sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)
(整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...
- sql注入学习笔记 详解篇
sql注入的原理以及怎么预防sql注入(请参考上一篇文章) https://www.cnblogs.com/KHZ521/p/12128364.html (本章主要针对MySQL数据库进行注入) sq ...
- Java SQL注入学习笔记
1 简介 文章主要内容包括: Java 持久层技术/框架简单介绍 不同场景/框架下易导致 SQL 注入的写法 如何避免和修复 SQL 注入 2 JDBC 介绍 JDBC: 全称 Java Databa ...
- Sql 注入----学习笔记2
转载自:http://blog.51cto.com/quiterr/1699964 sql注入 sql注入98年第一次出现在<phrack>54期上. 注入攻击有两个关键条件,第一是用户能 ...
- Sql 注入----学习笔记
先了解下CRLF,CRLF常用在分隔符之间,CR是carriage retum(ASCII 13,\r) LF是Line Feed (ASCII 10,\n), \r\n这两个字符类似于回车是用于换行 ...
- 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句
原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...
- SQL注入学习资料总结
转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Lang ...
- SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法
在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...
- SQL学习之SQL注入学习总结
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 测试数据库 我们本文就以如下数据库作为测试数据库,完成我们的注入分析 ...
随机推荐
- 了解PCI Express的Posted传输与Non-Posted传输
0.写在前面 本文首发于公众号[两猿社],后续将在公众号内持续更新~ 其实算下来接触PCIe很久了,但是由于之前换工作,一直没有系统的学习和练手项目,现在新项目买了Synopsys的PCIe IP,总 ...
- elasticsearch异常问题 discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
本文使用环境 centos7.x elasticsearch7.6.2 JDK1.8 错误:文件权限不足 [1]: max file descriptors [4096] for ...
- el-table分页展示数据
<el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" :show- ...
- Kubernetes实战总结 - Prometheus部署
什么是普罗米修斯? Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 . 自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员 ...
- I、恋爱之子
链接:https://ac.nowcoder.com/acm/contest/3570/I 来源:牛客网 题目描述 最近ZSC和他的女朋友NULL吵架了.因为ZSC是一个直男,他不知道该怎么办,于是他 ...
- Git应用详解第二讲:Git删除、修改、撤销操作
前言 前情提要:Git应用详解第一讲:Git分区,配置与日志 在第一讲中我们对Git进行了简单的入门介绍,相信聪明的你已经了解Git的基本使用了. 这一讲我们来进一步深入学习Git应用,着重介绍Git ...
- selenium 鼠标滑动操作验证码
selenium 鼠标点击操作比较简单,这里就不介绍了,主要说一下鼠标滑动(按住并滑动),经常用于解决自动化操作的滑动验证码 下面举个简单的例子,比如这种验证码: 代码: div = driver.f ...
- Java第三十五天,用JDBC操作MySQL数据库(一),基础入门
一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...
- spring boot 学习(一)——在idea建立第一个spring boot项目
1.打开idea->点击file->点击new->点击project->点击Spring Initializr->点击default 2.这是springboot的启动类 ...
- spring-cloud feign的多参数传递方案
查看原文 一.GET请求多参数URL 1.方法一(推荐) @FeignClient(“microservice-provider-user”) public interface UserFeignCl ...