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. linux_x86_64 blat安装

    blatSrc35.zip下载地址:http://users.soe.ucsc.edu/~kent/src/ 对于下载好的源代码安装包blatSrc35.zip,需进行编译,安装过程如下: 1.用un ...

  2. Python脚本控制的WebDriver 常用操作 <一> 启动浏览器

    由于本人的学习定位是基于Selenium+WebDriver+Python+FireFox+Eclipse+Pydev, 所以我的笔记也只和这方面相关. 我打算先学习基于Python脚本WebDriv ...

  3. jquery 图片背景透明度(支持IE5/IE6/IE7)

    设置背景图片,以突出透明度的效果及jquery png背景透明插件实例教程 <head> <title>toggle()</title> <style typ ...

  4. 安卓开发无法识别手机原因之一:手机SDK比工程要求的最小SDK低

      创建工程时,设置限制的最小SDK:   如果你手机的内核版本比你工程的设置的最小SDK低,则不显示   来自为知笔记(Wiz)

  5. python中的星号*、**的意义

    我们都知道,定义一个函数,当传入的参数个数未知时就可以使用*来表示. 单引号*: def test(*args): if len(args) >= 4: print(arg[3]) test(1 ...

  6. mysqli扩展库的 预处理技术 mysqli stmt

    问题的提出? 现在需要向mysql数据库添加100个用户,请问如何实现? 思路: 使用for循环100次,向数据库中添加100个用户. 使用批量添加 $sql1=”insert xxx”; $ssql ...

  7. [区块链] 密码学中Hash算法(基础)

    在介绍Hash算法之前,先给大家来个数据结构中对hash表(散列表)的简单解释,然后我再逐步深入,讲解一下hash算法. 一.Hash原理——基础篇 1.1 概念 哈希表就是一种以 键-值(key-i ...

  8. Django--用户认证组件auth(登录用-依赖session,其他用)

    一.用户认证组件auth介绍 二.auth_user表添加用户信息 三.auth使用示例 四.auth封装的认证装饰器 一.用户认证组件auth介绍 解决的问题: 之前是把is_login=True放 ...

  9. FJOI2019 划水记

    Day0 月考的余温尚未褪去,一周后期中考也将来临.一群被哄来打FJOI的水军,在期中大考必过前一百的死命令之下,仍然不怕死的花三天时间水同步赛.试机的路上乖乖排成两排,居然还有那么一丝春游的悠闲之感 ...

  10. ISP与DSP的区别【转】

    https://www.cnblogs.com/lifan3a/articles/5006760.html ISP 是Image Signal Processor 的简称,也就是图像信号处理器.而DS ...