sql

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 ;

sql

字符注入

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;

sql

上一篇:微信例子


下一篇:Oracle: check history of executed queries