SQL注入

定义

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

分类

按照请求方式分类:
Get型注入
Post型注入
按照SQL数据类型分类:
整型注入
字符型注入
其他数据类型:
报错注入
Cookie注入
双注入
User-Agent注入
时间盲注

MySQL

一个特殊数据库:

information_schema
mysql自带数据库

三张特殊的表:

表名
SCHEMATA存储了所有数据库的信息,show databases的结果就取自这个表
TABLES存储了数据库中所有表的信息,show tables的结果取自这个表
COLUMNS存储了所有表的字段信息

SQL语句

1.limit

检索6-15条数据:

select * from table limit 5,10;

检索6到最后一条数据:

select * from table limit 5,-1;

检索前5条数据:

select * from table limit 5;

2.group_concat()

将许多条数据合为一条数据显示

3.几条简单的SQL

显示所有数据库:

show databases;

打开某一数据库:

use databases_name;

显示所有表:

show tables;

4…select 1,2,3;

无任何意义,返回1,2,3三个值;但可以联合union一起使用来判断SQL语句查询的字段数

5.union

链接在源SQL语句后面,表示连接两条不同的SQL语句。
但是,这两条语句所返回的字段数必须相同。

6.# 是注释符

%23是 #的URL编码格式,可以用于注释原URL后面的SQL语句。

7.concat_ws(’:’,value 1,value 2)

按照“value1:value2”的格式显示,可以与group_concat()合用。

注入过程

			1. 判断是否有注入(判断是否有严格校验)【第一要素】
			   可控参数的改变是否能影响页面显示结果。
			   输入的SQL语句是否能报错,看到数据库的一些语句痕迹。
			   输入的SQL语句是否不报错,使我们的语句能够成功闭合。
		2.判断是什么类型的注入。
		3.语句能够被恶意修改。  【第二要素】
		4.能否成功执行。   【第三要素】
		5.获取我们想要的数据。

注入过程从数据库->表->字段->值

注入语句

查看当前数据库:

select database();

查看当前数据库中有哪些表:

select group_concat(table_name) from information_schema.tables where table_schema=database();

可获得此表中的所有字段值:

select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='表名';

查找值:

select '字段值' from ‘数据库名.表名’

所有数据库名:

select group_concat(schema_name) from information_schema.schemata;

万能密码 Or 1

只返回 column = abc 的信息:

select * table where column='abc';

返回整张表的信息:

select * from table where column='abc' or 1;

整条语句会因为 ‘or 1’ 变成:

select * from table;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值