SQL注入

SQL注入是服务器端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为。

本质:把用户输入的数据当作代码执行。任何和数据库产生交互的地方便有可能存在注入.

SQL注入类型

数据传输: GET POST COOKIE

数据类型: 整型 字符型

注入模式: 联合查询 报错 布尔盲注 时间盲注 推查询

SQL注入的一般步骤

  1. 判断是否有注入

    1. 可控参数的改变是否影响页面的结果。
    2. 输入的SQL语句是否能报错.---->通过数据库报错,看到数据库的语句痕迹。
    3. 输入的SQL语句能否不报错.---->语句能够成功闭合。
  2. 判断注入类型
  3. 语句是否能够被恶意修改
  4. 是否能够执行
  5. 获取我们想要的数据

SQL注入的基础知识

数据库结构

数据库---->表---->字段---->值

SQL5.0版本之后MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中有三个重要的表名schemata,tables,columns

schemata表存储该用户创建的所有数据库的库名,字段名为schema_name

tables表存储该用户创建的所有数据库的库名和表名,数据库库名和表名字段分别为table_schema,table_name

columns表存储所有的库名,表名,字段名,它们的字段名分别为table_schema,table_name,column_name

查询语句

select 要查询的字段名 from 库名.表名
select 要查询的字段名 from 库名.表名 where 已知条件的字段名 = '已知条件的值'
select 要查询的字段名 from 库名.表名 where 已知的条件字段名1 = '已知条件的值1' and 已知条件2的字段名 = '已知条件2的值'

limit用法

limit m,n

m表示记录开始的位置,从0开始表示第一条记录;n指取n条记录。

重要的函数

database()		当前网站使用的数据库。
version() 当前的MySQL版本。
user() 当前MySQL的用户。
@@datadir 数据库路径。
@@version_compile_os 操作系统版本
concat(str1,str2,...)					没有分隔符地连接字符串
concat_ws(separator,str1,str2,...) 含有分隔符地连接字符串
group_concat(str1,str2,...) 连接一个组的所有字符串,并以逗号分隔每一条数据

注释符

常见的注释表达方式为:#	--空格	/**/
在url中表示为: %23 --+

Union注入攻击

order by和union select

通过order by 数字查询该数据表的字段,当数据库不报错时就查出了数据库的字段数量;在数据库中查询参数ID对应的内容,然后将数据库的内容输出到页面上union select 1,2,3(数字个数为数据库的字段数量),数字可以替换为字段名,通过union select 查询出数据库的内容。

SQL 注入基础的更多相关文章

  1. Sql注入基础原理介绍

    说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...

  2. 通过sqli-labs学习sql注入——基础挑战之less1-3

    首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...

  3. 通过sqli-labs学习sql注入——基础挑战之less1

    环境准备: Phpstudy  (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...

  4. Sqli-labs之sql注入基础知识

    (1)注入的分类 基于从服务器接收到的响应  ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL盲注 •基于布尔SQL盲注 •基于时间的SQL盲注 •基于报错的SQL盲注 基于如何处理输 ...

  5. sql注入--基础

    什么是sql注入: 利用SQL语句 在外部 对数据库进行 查询,更新等 动作 sql注入的原理: 输入值可控且带入数据库执行(前提) 接受的变量传值未进行过滤(实质) sql注入的目的: 获取数据(网 ...

  6. Sql注入基础一

    凡是带入数据库查询的都有可能是注入.     整个数据包 Sql注入原理? 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作问题. Sql注入对于渗透的作用? 获取数据(网 ...

  7. SQL注入基础入门

    一般的WEB架构 SQL注入成因: 用户开启浏览器并连接http://www.xxx.com.位于逻辑层的Web服务器从文件系统中加载脚本将其传递给脚本引擎,脚本引擎负责解析并执行脚本. 脚本使用数据 ...

  8. SQL注入基础

    注入点的判断: 首先判断该注入点是怎么闭合的,常用的是','),')),",再利用and 1=2,and 1=1判断闭合是否正确 sql注入常用语句: 普通语句:schema_name——数 ...

  9. sql注入基础知识

    信息安全概论课堂作业 SQL注入之万能密码漏洞 第一道题是牵扯到了万能密码漏洞 用户名先输入个’ 返回了sql报错语句,猜测存在sql注入漏洞 使用万能密码测试 登陆成功 原理 假设登录框处的判断代码 ...

随机推荐

  1. 从零开始学Kotlin第七课

    1.强制类型转换需要在后面加两个感叹号 2.如果需要在java代码调用kotlin的方法时候使用文件名+kt.方法 3.object 类名 是创建匿名内部类的写法 调用 传入class对象 4.在to ...

  2. Netty高性能网络应用框架对标P7面试题分享v4.1.70.Final

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Netty官网 https://netty.io/ 最新版本为4.1.70.Final Netty是一个异步的.事件驱 ...

  3. P7045 「MCOI-03」金牌

    考虑维护一个队列. 先插入\(a_1 = 0\) 依次往后考虑,如果和队列里相斥,则我们把队列一个和他捆绑起来. 如果队列空,则加入该颜色. 最后考虑往队列里插入改颜色. 总共为\(2 * (n - ...

  4. 洛谷 P5224 - Candies(循环卷积)

    洛谷题面传送门 一道题解长度大概不到 1k 的题,可还是决定写篇题解,因为自己没有做出来( \(1004535809\) 好评( 首先这个 \(\equiv m\pmod{k}\) 有点把我们往单位根 ...

  5. 洛谷 P4548 - [CTSC2006]歌唱王国(概率生成函数)

    洛谷题面传送门 PGF 入门好题. 首先介绍一下 PGF 的基本概念.对于随机变量 \(X\),满足 \(X\) 的取值总是非负整数,我们即 \(P(v)\) 表示 \(X=v\) 的概率,那么我们定 ...

  6. Congratulations, FYMS-OIers!

    Fuzhou Yan'an Middle School Online Judge 又一次上线啦! 真的是一波三折,主要功劳必须得属于精通网页编排.ubuntu 下如何使用 rm -rf 语句但是又能够 ...

  7. 7. Minimum Depth of Binary Tree-LeetCode

    难度系数:easy /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; ...

  8. C# / VB.NET 在Word中嵌入多媒体(视频、音频)文件

    Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...

  9. VSCode+Maven+Hadoop开发环境搭建

    在Maven插件的帮助下,VSCode写Java其实非常方便.这一讲我们介绍如何借助maven用VScode搭建Hadoop开发环境. 1.Java环境安装 首先我们需要搭建好Java开发环境.我们需 ...

  10. 虚拟机中安装centos系统的详细过程

    linux-centos的安装 检查电脑是否开启虚拟化,只有开启虚拟化才能安装虚拟机 新建虚拟机 鼠标点进去,选中红框所示,回车 登录: 输入默认用户名(超级管理员 root) 密码:安装时设置的密码