sql注入的基本知识

1、SQL的分类

2、mysql常用方法

3、逻辑运算

  提出一个问题Select * from users where id=1 and 1=1; 这条语句为什么能够选择出id=1的内容,and 1=1 到底起作用了没有?

  这里就要清楚sql 语句执行顺序了。同时这个问题我们在使用万能密码的时候会用到。

  Select * from admin where username=’admin’ and password=’admin’

  我们可以用’or 1=1# 作为密码输入。原因是为什么?这里涉及到一个逻辑运算,当使用上述所谓的万能密码后,构成的sql 语句为:

  Select * from admin where username=’admin’ and password=’’or 1=1#’

  Explain:上面的这个语句执行后,我们在不知道密码的情况下就登录到了admin 用户了。

  原因是在where 子句后, 我们可以看到三个条件语句username=’admin’ and  password=’’or 1=1三个条件用and 和or 进行连接。在sql 中,我们and 的运算优先级大于or 的元算优先级。因此可以看到第一个条件(用a 表示)是真的,第二个条件(用b 表示)是假的,a and b = false,第一个条件和第二个条件执行and 后是假,再与第三个条件or 运算,因为第三个条件1=1 是恒成立的,所以结果自然就为真了。因此上述的语句就是恒真了。

4、sql注入流程

  启动数据库,检索数据库实例;

Show databases;

5、使用information_schema

  Mysql 有一个系统数据库information_schema,存储着所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。

猜数据库

select schema_name from information_schema.schemata;

猜某库的数据表

select table_name from information_schema.tables where table_schema="xxxxx";

猜某表的所有列

Select column_name from information_schema.columns where table_name="xxxxx";

获取某列的内容

Select *** from ****

实例:

select schema_name from information_schema.schemata
select table_name from information_schema.tables where table_schema="security"
Select column_name from information_schema.columns where table_name="users"
use security;
select password from users where username = ‘admin‘;

存放数据库实例的表:information_schema.schemata其中数据库实例的字段名: schema_name

存放数据表的表:information_schema.tables其中数据库实例的字段名:table_schema,表名字段:table_name

存放数据列的表:information_schema.columns表名字段:table_name

6、union

union可以联合2个sql查询语句,要求这2条sql查询语句返回的结果列数相同。

select * from users where id= ‘1‘ union select 1,2,3

select * from users where id= ‘1‘    --查询结果是,

select 1,2,3 --查询结果是,

当其中一个查询语句的结果为空时(不是报错),则只显示另外一条sql查询

7、order by

order by 2

对查询的结果,按照第2列升序排序,

order by 2 desc

对查询的结果,按照第2列降序排序。

作用可以判断,原SQL查询语句有多少列,一旦order by后面的数据大于查询的列,就会报错,由此可以判断原SQL查询的是多少列数据。

+用于代替空格

原文地址:https://www.cnblogs.com/smartmsl/p/12260600.html

时间: 2024-10-14 12:27:34

sql注入的基本知识的相关文章

sql注入的小知识

1.为啥order by 是排序.而在注入当中后面加的却不是字段而是数字捏? 答:第N个字段嘛.order by 5就是第五个字段,如果5存在,6不存在.就说明只有五个字段咯. 2.为啥order by 猜出字段数了以后,就是联合查询的时候的个数(比如字段为4,为啥就是select 1,2,3,4捏?) 答:指定表就是:select 列名 form 表名 所以说有几个字段数,就有几个列明 3.为啥会出现显示位这个东东呀? 答:联合查询的结果是对应出现的. mysql> select 1; +--

WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避免后知后觉的犯下大错,专门参考大量前辈们的心得,小小的总结一下,欢迎大家拍砖啊 一.跨站脚本攻击(XSS) 跨站脚本攻击的原理 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时

初识sql注入及sqlmap

对于sql注入小白的我,上午在红黑联盟的网站上恶补了一下sql注入的基础知识,(走马观花)似乎明白sql注入是怎么一回事,也看了一些关于sqlmap的资料,再次记录一下吧 下面是关于sqlmap这个工具的介绍,发现两篇介绍sqlmap的文章(自己觉得不错):有一篇叫<sql注入之sqlmap入门>的文章介绍了sqlmap, 文章来源:http://www.freebuf.com/articles/web/29942.html 安全攻防之SQL注入(通过sqlmap搞定所有问题) 文章来源:ht

SQL注入攻防入门详解(2)

SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口.这几天把sql注入的相关知识整理了下,希望大家多多提意见. (对于sql注入的攻防,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避免后知后觉的犯下大错,专门查看大量前辈们的心得,这方面的资料颇多,将其精简出自己觉得重要的,就成了该文

[转]SQL注入攻防入门详解

原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口.这几天把sql注入的相关知识整理了下,希望大家多多提意见. (对于sql注入的攻防,我只用过简单拼接字符串的注入及参数化查询,可以说没什么

SQL注入攻防入门详解

原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口.这几天把sql注入的相关知识整理了下,希望大家多多提意见. (对于sql注入的攻防,我只用过简单拼接字符串的注入及参数化查询,可以说没什么

如何利用sql注入进行爆库

SQL注入能做什么 在<SQL注入基础>一文介绍了SQL注入的基本原理和实验方法,那接下来就要问一下,SQL注入到底能什么? 估计很多朋友会这样认为:利用SQL注入最多只能获取当前表中的所有记录,但无法获取其它表的内容,事实果真的如此? 正像小偷从窗户爬进入房间,难道他只能在房间内偷东西?非也,他可以将整个房子洗劫一空. 不相信?那来看看如何对MySQL进行爆库. 如何将MySQL数据库连根拔起 如果作为一名黑客,根本无法知道系统中有哪些表,表中有哪些字段,那如何将数据库的内容窃取出来呢? 答

【转载】SQL注入攻防入门详解

滴答…滴答…的雨,欢迎大家光临我的博客. 学习是快乐的,教育是枯燥的. 博客园  首页  博问  闪存    联系  订阅 管理 随笔-58 评论-2028 文章-5  trackbacks-0 站长统计|  今日IP[353] | 今日PV[848] | 昨日IP[922] |  昨日PV[2188] |当前在线[10] SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但

sql注入学习笔记(1)

把学习到的sql注入的一点知识记录下来 更改默认的sqlmap脱库保存的路径  --output-dir F:\ Substr(字符串,起始位置,字符数)   (初始为1不是0) 这里有示例 https://www.1keydata.com/cn/sql/sql-substring.php 通常配合ascii函数判断出字符的值ascii(substr((select database()),1,1))) > 100 二分法(又叫折半法)可以减少猜测的量 Length()   判断长度 AND (