sql-labs-less25/less25a|sql注入

前言:

less25和less25a差别不大,绕过方法有很多,不是很难,这两关一起简单说一下,如有错误欢迎师傅指正。

正文:

less25:

直接看图:
sql-labs-less25/less25a|sql注入
直接测试,在使用#井号注释的时候会报错,而且由下面的提示信息可以看到:过滤后的语句为1’ 很明显井号被过滤掉了,而且这一关也将and和or过滤掉了,方法有下面几个(或许有的方法我不知道):

  1. 使用||代替or,后面跟||1='1进行闭合绕过:
    sql-labs-less25/less25a|sql注入
    可以看到正确回显,不过依然只能在第二字段注入,具体原因已经在23关这篇里面讲过,不清楚的可以去看一下,后面的过程就直接在第二字段注入就可以了。
  2. 双写绕过:使用oorr 或者anandd效果跟第一种方法一样,由于后台进行了or和and过滤,那么oorr和anandd过滤掉中间的or和and以后语句就重新组合成了or和and,使用方法同第一种一样,只是绕过方式不一样。
  3. 不用and和or,直接使用井号#注释,由于传递参数的时候会进行url编码,所以直接让井号进行url编码就行,井号url编码为**%23**,测试如下:
    sql-labs-less25/less25a|sql注入

这里和前面两种方法有点不同,由于没有使用1='1生成结果,所以不会占回显位,所以在第二和第三字段都可以注入,如下:
sql-labs-less25/less25a|sql注入
可以看到第二和第三字段都成功回显,不过在进行后面的步骤的时候会出现一个小问题:
sql-labs-less25/less25a|sql注入
仔细看可以看出,注入的information在过滤后变成了infmation(少了or),这是由于后台过滤or和and造成的,很简单,使用双写就可以了,比如:infoorrmation
sql-labs-less25/less25a|sql注入
成功回显,后面的就是常规注入,不再啰嗦。

less25a:

这一关跟less25差别不大,看图:
sql-labs-less25/less25a|sql注入
使用id=1’进行字符注入测试的时候发现报错(下面会说报错信息),进行注释也不行,但是去掉引号就正常回显了,说明是数字型注入,如上图,那么接下来就进行注入就可以了:
sql-labs-less25/less25a|sql注入
这里只注意报错信息,注入过程可以发现,只要出现错误就会报这个错误,查看源码可以发现关闭了错误回显,所以每次报错都是这样,我刚做的时候也难住了很久,还以为是注入方式出了问题,那么可以使用时间盲注,可以参考前面的文章,比如这篇。因为关闭错误回显,所以就不能使用报错注入了,当然使用上一关的方法也可以,不过依靠时间注入会更可靠一点,方法讲完了,这只是我能想到的方法,如果有更好的欢迎讨论,有错误的地方也欢迎师傅指正。加油!