SQL注入的原理与分析

1、SQL注入的本质

2、部分SQL语句

3、SQL注入流程


一、SQL注入的本质

  SQL注入的本质,就是把用户输入的数据当作代码执行

  Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令

  两个必要关键的条件:

  第一,用户能够控制输入

  第二,原本程序要执行的代码拼接了用户输入的数据然后执行

二、部分SQL语句

  · column_name 字段名

  · table_name 表名

  · schema_name 库名

  · information_schema 数据库所有信息,库、表、字段

  · information_schema.columns 所有字段的信息

    table_schema 所在数据库

    table_name 所在表

    column_name 字段的名字

  · information_schema.tables  所有表的信息

    table_schema 所在数据库

    table_name 表的名字

  · information_schema.schemata 所有数据库的信息

    schema_name 数据库的名字

三、SQL注入流程

  SQL注入流程

  · 找与数据库交互的地方

  · 判断是否存在注入点,注入是字符型or数字型

  · 判断当前表的一个字段数,当前所在的库

  · 去系统自带信息库查表名,字段名

  · 查询需要的字段数据

  SQL注入步骤

  1、判断是否存在注入点

  最古老的方法:and 1=1 成立 且 and 1=2 不成立 => 存在sql注入
  最简单的方法:页面后面加单引号,若报错,则存在sql注入
  进阶:如果是数字型传参,可以尝试-1
  and 1=1 and 1=2 被拦截的可能性超高
  可以尝试 and -1 = -1 或者 -1=-2 或者1>0,,,或者直接or sleep(5)

  2、判断是字符型or数字型

  在SQL基础里第八小节里有提到过

  3、判断当前表的字段数,库名

  判断字段数:order by 字段序数   =>  这个语法是是排序语法,根据第几个字段排序,例如,该表有2个字段,若是用了 order by 3 则会报错,因为只有两个字段,不可能根据第三个字段排序。字段序数大于字段数则会报错

  库名,database() 查询当前所在 数据库函数

  4、去系统自带信息库查表名,字段名

  Ps:mysql在5.0以上版本加入了information_schema这个系统自带库,其中保存着关于mysql服务器所维护的其他数据信息,如数据库名,数据库的表,表栏的数据类型与访问权限

  Tip.  库.表 =>  选中某个库里的某个表

  ·  information_schema.tables 存放着表名和库名的对应

  ·  information_schema.coiumns 存放着字段名和表名的的对应

SQL注入的原理与分析的更多相关文章

  1. SQL注入的原理及分析

    注入攻击的本质:将用户输入的数据当做代码执行. 有2个限制条件: 1.用户能够控制输入. 2.原本程序要执行的代码,拼接了用户输入的数据后进行执行. 定义:用户输入的数据被当做SQL语句执行. 以下面 ...

  2. SQL注入漏洞原理与利用

    SQL注入漏洞原理与利用 SQL注入漏洞流程 判断注入类型 判断字段个数 查询回显位 查询数据库名 查询表.字段名 查询内容 判断注入类型 1.数字型注入点判断 当要输入的参数x为数字型时,后端脚本中 ...

  3. Sql注入基础原理介绍

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

  4. Mybatis下的SQL注入漏洞原理及防护方法

    目录 一.前言 二.SQL 注入漏洞原理 1.概述 2.漏洞复现 3.修复建议 三.Mybatis 框架简介 1.参数符号的两种方式 2.漏洞复现 四.Mybatis 框架下的 SQL 注入问题及防护 ...

  5. 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

  6. PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO(PDO一是PHP数据对象(PHP Data Object)的缩写),可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_ ...

  7. 【漏洞复现】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现

    影响版本 wordpress < 5.8.3 分析 参考:https://blog.csdn.net/qq_46717339/article/details/122431779 在 5.8.3 ...

  8. 【渗透课程】第五篇-SQL注入的原理

    哈哈哈,讲到注入了.我想给大家讲注入的原理.这个我们前面的前言篇就说过,所谓的SQL注入就是,绕过数据库验证机制直接执行SQL语句.怎么说呢,我们先讲一个概念吧! 网站和网页的区别 单纯的网页是静态的 ...

  9. SQL注入的原理及一般步骤

    原理 SQL注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后该字符串传递到SQL Server的实例以进行分析和执行.任何构成SQL语句的过程都应进行注入检查,因为SQL Serv ...

  10. SQL注入的原理以及危害

    SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符 ...

随机推荐

  1. JuiceFS v1.0 beta2 发布|进一步提升稳定性

    这是 JuiceFS v1.0 正式发布前的第二个 beta 版本,共有 16 位社区伙伴贡献了 150+ 次提交 .本次更新以 Bug 修复和稳定性提升为主,辅以大量的文档更新和测试用例优化,并带来 ...

  2. [Java]HashMap与ConcurrentHashMap的一些总结

    HashMap与ConcurrentHashMap的一些总结 HashMap底层数据结构 JDK7:数组+链表 JDK8:数组+链表+红黑树 JDK8中的HashMap什么时候将链表转为红黑树? 当发 ...

  3. 亚马逊Dynamo数据库解读(英文版)

    最近看了亚麻的Dynamo,个人认为其中always writeable的业务目标,对于DHT,vector clock,merkel tree的应用,包括对于一致性和高可用的权衡(基于CAP猜想,实 ...

  4. SpringBoot 2.6 和 JUnit 5 的测试用例注解和排序方式

    JUnit5 的测试注解 在JUnit5中, 不再使用 @RunWith 注解, 改为使用 @ExtendWith(SpringExtension.class) @ExtendWith(SpringE ...

  5. oracle exp/imp命令使用parfile实现参数文件调用

    优先使用数据泵(expdp/impdp)方式,更高效,问题少. 关于exp/imp工具的使用请参考我的另一篇文章: https://blog.csdn.net/IndexMan/article/det ...

  6. cf的几道小题

    1.E - Fridge 教训:做题的时候,没有想清楚问题,把问题复杂化了 #include <bits/stdc++.h> #define int long long using nam ...

  7. RCE代码执行漏和命令执行漏洞

    前置知识: 漏洞检测: 在了解漏洞概念前,应该先知道一下这个漏洞如何检测的,我们应该或多或少听过白盒测试(白盒),黑盒测试(黑盒). 白盒测试: 白盒测试是对源代码和内部结构的测试,测试人员是可以知道 ...

  8. 信捷电气 - C++工程师面试题(社招:3-5年工作经验)

    1. char i = 1; printf("%d",i);    // char字节用printf以整数型打印出来 2. int (*a[10])int a[10]是函数指针数组 ...

  9. win32-CreateDIBSection的使用

    使用CreateDIBSection 可以创建一个设备无关位图 #include <windows.h> using namespace std; int main() { HDC hdc ...

  10. 深入理解Go语言(04):scheduler调度器-GMP里结构体源码分析

    在前面一节中简单介绍了golang的调度模型-GPM模型,介绍了他们各自的作用.这篇文章就来看看他们的源码结构. Go版本:go1.13.9 M结构体 M结构体是OS线程的一个抽象,主要负责结合P运行 ...