sql注入
基础
数字与union注入
知识:
get与post区别:get会显示在url上,post不会
Mysql-union语句:在多个表里查询
数字注入即利用url会进行运算来住入
union注入
描述
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
语法
MySQL UNION 操作符语法格式:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
参数
- expression1, expression2, ... expression_n: 要检索的列。
- tables: 要检索的数据表。
- WHERE conditions: 可选, 检索条件。
- DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
- ALL: 可选,返回所有结果集,包含重复数据。
例如mysql> select * from news where id =1 union select * from user ;
字符注入
mysql中若等式两边类型不一致会进行强制转换,例如“1a”->1,“a”->0
利用单引号,注释符,双引号来改变url意思
布尔盲注
information_schema 数据库有常用且方便的信息
例如 select column_name from columns where table_name="news" ;
concat()连接字符串 mid子字符串
猜测数据表里项的内容
报错注入
首先了解下updatexml()函数
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
但是第二个参数应该合法 不合法会报错,其中可以执行mysql语句
例如 :
select * from user where id = 1 and updatexml(1,concat("1",(select pwd from user where id =1),"1"),3);
注入点
select
SELECT 的语法格式如下:
SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
利用as别名
? select (select pwd from user where id =1 ) as title from news;