MySQL带AND关键字的多规格查询,之后再将那一个参数字传送递给后台的SQL服务器加以深入分析并执行

使用上述表举例:输入单个关键字“admin”可查出这两条数据,输入“admin,000000”只查出第一条数据,可实现的sql语句是:

缺点

需要脚本输出 sql错误信息

13、文件导入到表
  要想将文本文件“pet.txt”装载到pet表中,使用这个命令:
mysql> LOAD DATA LOCAL INFILE ‘/path/pet.txt’ INTO TABLE pet;
  请注意如果用Windows中的编辑器(使用rn做为行的结束符)创建文件,应使用:
mysql> LOAD DATA LOCAL INFILE ‘/path/pet.txt’ INTO TABLE pet
-> LINES TERMINATED BY ‘rn’;
  (在运行OS X的Apple机上,应使用行结束符’r’。)
  如果你愿意,你能明确地在LOAD
DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。这对读入文件“pet.txt”的语句已经足够

PS:下面看下mysql多关键字多字段模糊查询

UNION query SQL injection(可联合查询注入)

7、SELECT查询语句
主要用来查询数据
格式:SELECT * |字段名称|函数 FROM 表名 [WHERE 条件] [order by
字段名称] [group by 字段名称][having 条件][limit 限制]
1、*
  *在查询语句中表示当前表的所有字段(顺序为建表时字段顺序)
2、where条件:
澳门新葡8455最新网站,  常用的条件符合:
1、=、<、>、!=、<>、<=、>=
2、AND:并且,同时满足
3、OR:或者,满足其一
4、IN (值,……):对应的字段的值再()里,一般不连续的多个值
5、between A and B:在A和B之间,[A,B]
6、IS NULL:为空
7、NOT:不
8、子查询

(表名为user)

宽字节注入

5、UPDATE修改语句
格式:UPDATE 表名 SET 字段名称=值[多个字段] [WHERE 条件]

总结:

优点

方便 易于利用 快捷

查询id为4或者id为8
SELECT * FROM user WHERE id=4 OR id=8;

假设有这样两条数据:

偏移注入

修改id为2的用户名字为金星
  UPDATE user SET username=’金星’ WHERE id=2;
修改id为3的用户的名字和密码
  UPDATE user SET username=’网警’,password=”654321″ WHERE id=3;
修改user中所有的密码为123456
  UPDATE user SET password=’123456′;

查询student表中,id字段值在12、13、14、15之中,name字段值以字符串“ng”结束,并且,grade字段值小于80的记录

优点

你知道目标表的一个字段,比如id,但是却不知道其他字段

9、匿名登录
  一些MySQL安装允许用户以匿名(未命名)用户连接到本地主机上运行的服务器。如果你的机器是这种情况,你应该能不带任何选项地调用mysql与该服务器连接:

select * from 表名 where concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%关键字1%' and concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%关键字2%' ......;

缺点

条件苛刻

修改user表中username字段的长度为30
  ALTER TABLE user MODIFY username VARCHAR(30);

1) username=admin,password=000000

整型注入修补方案

在接受参数时,添加intval()函数进行过滤
添加is_numeric

shell> mysql
成功地连接后,可以在mysql>提示下输入QUIT (或q)随时退出:

select * from user where concat(username, password) like '%admin%';select * from user where concat(username, password) like '%admin%' and concat(username, password) like '%000000%';

SQL注入是什么

SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。

开发中的删除:
1、真删除
直接使用DELETE语句删除指定的数据
2、假删除
使用UPDATE 修该指定字段

SELECT * | {字段名1,字段名2,……}FROM 表名WHERE 条件表达式1 AND 条件表达式2 […… AND 条件表达式n];

漏洞修补方案

12、DESCRIBE 描述
mysql> DESCRIBE pet;

可以看出,查询条件必须都满足,才会返回

缺点

要求网站没有过滤关键字 没有转义 有显示位

删除user中名称为王星的人
  DELETE FROM user WHERE username=’王星’;

select * from user where concat(username, ',', password) like '%admin000000%';

SQL注入漏洞产生原理

对构造成SQL语句的变量,过滤不严格,造成可以构造任意的SQL语句,传递到数据库执行。

查询user表中所有信息
SELECT * FROM user;
等价于
SELECT id,username,password,flag FROM user;

concat的作用是连接字符串,但这样有一个问题:如果你输入单个关键字“admin000000”也会查到第一条数据,这显然不是我们想要的结果,解决方法是:由于使用逗号分隔多个关键字,说明逗号永远不会成为关键字的一部分,所以我们在连接字符串时把每个字段以逗号分隔即可解决此问题,下面这个sql语句不会查询到第一条数据:

SQL注入分类

  • UNION query SQL injection(可联合查询注入)
  • Boolean-based blind SQL injection(布尔型注入)
  • Error-based SQL injection(报错型注入)
  • Stacked queries SQL injection(可多语句查询注入)
  • Time-based blind SQL injection(基于时间延迟注入)

查询id大于1小于6的人
SELECT * FROM user WHERE id<6 AND id>1;
等价
SELECT * FROM user WHERE id BETWEEN 2 AND 5;

可以看出,返回的记录,同时满足了AND关键字连接的三个条件表达式。

Stacked queries SQL injection(可多语句查询注入)

mysql> QUIT
Bye
  在Unix中,也可以按control-D键断开服务器。

我们要实现的效果是可以输入多个关键字查询,多个关键字间以逗号分隔。

字符串注入修补方案

转义:
htmlspecialchars()
mysqli_real_escape_string()
过滤:
过滤关键字 过滤特殊字符

by secevery

1、CREATE创建
创建数据库:
  CREATE DATABASE [ if NOT EXISTS] 名称 [CHARACTER SET 编码格式]
[COLLATE 比较方式];
创建表:
  CREATE TABLE [IF NOT EXISTS] 名称 (字段名称 数据类型,……)
[CHARACTER SET 编码格式] [COLLATE 比较方式];

查询student表中,id字段值小于16,并且,gender字段值为nv的学生姓名

缺点

条件苛刻

6、DELETE删除语句
删除表中的数据
格式:DELETE FROM 表名 [where 条件];

以上所述是小编给大家介绍的Mysql带And关键字的多条件查询语句,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

优点

GB2312、GBK、GB18030、BIG5、Shift_JIS等这些宽字节,如果开启了转义,可以绕过

4、INSERT新增语句
格式:INSERT INTO 表名[(字段名称)] VALUES(值1,值2);
  INSERT INTO user (id,username,password,flag)
VALUES(5,’战旗’,’838′,1);
//简写形式
  INSERT INTO user VALUES5(5,’战旗’,’838′,1);

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图