SQL注入的原理分析

注入攻击的本质,是把用户输入的数据当做代码执行。

注入的关键条件:

第一个是用户能够控制输入

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

1.sql注入本质是什么

把用户输入当做代码执行

2.sql注入的条件

用户可控输入和原本程序要执行代码,拼接用户输入且当作SQL语句去执行

3.order by的作用及含义

order by 用于判断显示位,order by 原有的作用是对字段进行一个排序,在sql注入中用order by 来判断排序,order by 1就是对一个字段进行排序,如果一共四个字段,你order by 5 数据库不知道怎么排序,于是乎就错误了无返回值

4.union select如何发挥作用

union为联合查询,a联合b进行了查询,为查询了前面的sql语句(原有的)后再进行后面的sq查询(我们添加的),但两张表联合查询的字段数必须相同。

5.输出位是什么

SQL查询出来的数据不一定全部会输出,页面上只会输出几个字段的信息,那几个会输出的字段就是输出位

6.information_schema是什么

information_schema是mysql的系统自带表,用于查询数据,在mysql5.0以上版本中存在

7.加单引号和加 and 1=2有什么区别

有区别,单引号是为了闭合语句,而and 1=2是为了让union前面的语句无查询结果无输出,然后直接输出拼接进去union后面的那个语句的查询结果

8.and 是什么意思

and 为和的意思,一个语句中,当前一个正确,后一个错误时,如果是and连接整个语句返回是False

9.or是什么意思

Or 为和的意思,一个语句中,当前一个正确,后一个错误时,如果是or连接整个语句返回是True

10.and 和 or 选择使用有什么讲究?

And 语句执行时,如果and 前的语句返回False,那么and后面的语句根本不执行

11.除了单引号外还有其他的符号可以闭合吗?

实际上还是要看源码,常见的是单引号和双引号还有括号

12.limit的作用

limit 在注入中用于排序然后输出,limit a,b a代表了从哪个位置(从0开始) b代表从那位开始显示几条数据

13.可以查讯多个字段内容吗

可以,可以使用语句Group_concat()函数进行输出

14. %23有什么作用

%23编码为#,用于注释后面的语句,防止SQL注入点后原本的SQL语句对SQL注入进行干扰

15.报错注入的原理

利用sql注入拼接sql语句,将报错信息输出时同时将我们想要的信息输出

16.闭合是什么

在sql查询中,代码比较严谨,括号和引号都得成双成对,引号内的默认是字符串不会当作SQL语句执行,所以必须闭合然后才能注入,当然有些SQL语句直接拼接,也就不用什么闭合了

17.SQL注入有数据库限制吗?

没有,常见的数据库都可以

18.SQL注入有动态脚本语言限制吗?

没有限制

19.SQL注入如果没系统自带表怎么办

那就惨了,只能通过猜,不断的尝试,一般而言数据库的表也不会乱起名字,毕竟是团队协作的东西

20.系统自带库管理员不会修改吗?

一般而言并不会

21.union all 和 union 区别

如果输出的数据有相同的,Union只会输出一次,而union all都会输出

22.为什么用and 1=1正常 and 1=2报错来判断是否存在SQL注入

因为如果存在SQL注入,那么and就是和的意思,1=1是一个恒等式,然后因为原本能够查出数据,那么两个真就是True,但是1=2肯定是不可能的,这里就会返回一个False,然后因为和必须两个真才返回True,所以这里拼接就不成立返回False.

常用函数:

GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果,并用逗号分割开

ASCII(char) 返回字符的ASCII码值

DATABASE() 返回当前数据库名

USER()或SYSTEM_USER() 返回当前登陆用户名

VERSION() 返回MySQL服务器的版本

SLEEP(n) 休眠n秒

注入步骤:

原文地址:https://www.cnblogs.com/zhaxiaohu/p/12119348.html

时间: 2024-07-30 00:25:25

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

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

我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么? 一.为何要优先使用PDO? PHP手册上说得很清楚: Prepared statements and stored procedures Many of the more mature databases support the concept of prepared statemen

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

哈哈哈,讲到注入了.我想给大家讲注入的原理.这个我们前面的前言篇就说过,所谓的SQL注入就是,绕过数据库验证机制直接执行SQL语句.怎么说呢,我们先讲一个概念吧! 网站和网页的区别 单纯的网页是静态的,html就是静态的,一些简单的网站(如某些引导页)只有网页和网页之间的跳转.而网站是动态的,是一个整体性的web应用程序,几乎所有的网站都要用到数据库.数据库我们怎么利用呢?例如某些博客站,cms站点.它的文章并不是存在网站目录里的,而是存在数据库里的,例如某些cms是通过后缀?id=321来调用

SQL注入的原理以及危害

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击. 基础原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 根据相关技术原理,SQ

存储过程造成严重安全后门——记某电商SQL注入安全事件实例分析

3月女人节,电商行业自己创办的节日,着实让爱购物的女人们疯狂了一把.默默躲在屏幕背后的黑手,此时也正值忙碌时期.事后,笔者有幸被邀请参与A公司黑客入侵电商ERP系统安全事件的评估分析.黑客采取的手段和事后的原因追查分析,隐去客户信息,分享给大家,警示防范. 事件起由,公司发现电商ERP系统后台数据库(oracle)被SQL注入,特别严重的是应用所用的普通用户账号被提升为DBA权限:所幸的是入侵者并未对数据库的后台数据进行破坏,比如truncate table或drop database,否则后果

Java学习笔记47(JDBC、SQL注入攻击原理以及解决)

JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步骤: 1.注册驱动 2.获得连接 3.获得语句执行平台 4.执行sql语句 5.处理结果 6.释放资源 1.导入jar包,可以在网上下载到,这里使用的是:mysql-connector-java-5.1.37-bin.jar 注册驱动: package demo; import java.sql.D

sql注入的原理是什么,怎么预防sql注入

为什么会产生sql注入: 主要原因,对用户输入的绝对信任,相信所有用户的输入都是可信的,没有对用户输入的语句进行过滤或者筛选,直接放到sql语句中进行拼接,从而导致了sql注入的产生 例如: <php? id = $_GET['id']; sql = "select * from tables where id=$id limit 0,1"; ....... ?> 如果是正常的id等于数值之类,是没有问题的,但是id如果被恶意更改或者更改,我们原本的逻辑就会出现一系列的问题

使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的MySQL Community Server 选择想要的版本进行下载 之后的步骤,因为本人已经安装过MySQL数据库,而卸载重装会比较麻烦,卸载不干净会导致新的装不上,所以可以参考下面的博客,因为官网的改动,前面的部分已经与该博客不符,按照本人在上面的介绍寻找即可 https://blog.csdn

SQL注入的原理解说,挺好!

原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 总结 前几天,国内最大的程序猿社区CSDN网站的用户数据库的黑客公告.600登录名和万用户password被公开泄露,随后又有多家站点的用户password被流传于网络,连日来引发众多网民对自己账号.password等互联网信息被盗取的普遍担忧. 网络安全成为了如今互联网的焦点,这也恰恰触动了每一位用户的神经,因为设计的漏洞导致了不可收拾的恶果,验证了一句

SQL注入漏洞的分析与利用(二)

Access手工注入 1.实验环境:实验平台:小旋风ASPWeb服务器目标网站:南方数据2.02.打开网站,随意点开一个页面看到?id=4说明有参数传递,用的是get方法,可能是一个注入点加入判断语句:url: http://xxx/shownews.asp?id=16sql语句: select from news where id=16测试语句:http://xxx/shownews.asp?id=16 and 1=1等效于:select from news where id=16 and 1