• SQL Labs刷题补坑记录(less31-less53)


    LESS31:

    双引号直接报错,那么肯定可以报错注入,并且也过滤了一些东西,^异或没有过滤,异或真香

    -1" and (if(length(database())=8,1,0)) and "1 这个payload可以

    LESS32:

    发现'被转移了,尝试宽字节绕过,反斜杠是%5c,前面拼接成%df就是一个汉字,要求mysql的字符集是GBK,即两个字符为一个汉字

    LESS33:

    还是宽字节和32一样:

    -1%df%27%20or%20exp(~(select%20*%20from%20(select%20user())a))--+

    可以看到id参数此时经过urlencode以后将'单引号编码,此时还原时%df%27就会合并

    在mysqlquery的时候设置编码方式为gbk才导致了漏洞,应该设置为binary

    LESS34:

    这道题也是宽字节注入,不过这个注入点在post参数上,如果我们直接在post里面输入%df' or 1#那么此时不行,

     

    实际上将%百分号也进行了编码,因为表单提交会将数据编码一次,此时传递过去解码的时候无法吃掉反斜杠,所以必须绕过浏览器端的urlencode,所以

    只要去掉对%的编码即可,此时就能吃掉反斜杠

     LESS35:

    这道题也是有转义,不过不需要引号就可以注入

    LESS36:

    将 utf-8 转换为 utf-16 或 utf-32,例如将 ‘ 转为 utf-16 为 � ' ,这样也可以绕过的过滤,同样是因为gbk的问题

    payload为%ef%bf%bd' or 1--+,这里%df也可以

     

    LESS37:

    post型,与前面过滤方式相同,直接%DFburp改包就可以

    LESS38:

    虽然说得是堆叠注入,但是这盲注报错都可以,堆叠注入一般都没有回显,在实际情况中基本见不到, 并且对数据库类型也有要求。

    直接 ' or 1 --+ 就可以

    LESS39:

    堆叠注入,在SQL中,分号(;)是用来表示一条sql语句的结束。
    试想一下我们在分号(;)结束一个sql语句后继续构造下一条语句,会不会一起执行?
    因此这个想法也就造就了堆叠注入。
    而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?
    区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

    和38一样只是少了引号的闭合,可以看到里面用到了multi_query,因此可以执行多条语句

    LESS40:

    括号的闭合方式不同了,没有报错,不能报错注入,但是可以union和盲注

    LESS41:

    无报错,括号闭合方式不同,这里为int型

    LESS42:

    这道题的注入点在password处,还是堆叠注入,有报错回显,就不演示了,括号闭合为单引号,username有过滤

     更改密码处有过滤

    LESS43:

     

    括号闭合方式改变了,其他不变,不再演示,还是堆叠注入。

    LESS44:

    盲注的堆叠注入,感觉没多少意思。

    LESS45:

    盲注,括号闭合方式变了,登陆成功和登陆失败逻辑不同,满足盲注条件

    LESS46:

    order by 相关注入,这里的注入点在order by之后,说明我们不能够用union,order by后面要跟一个数字,因此我们要构造语句让其结果为一个数字

    这里直接()括号加sql语句的话找不出两种逻辑,加上rand函数以后才能够显示排序不同,可以根据表格最后一行显示不同来断定逻辑,进行盲注。

     

     也可以直接报错注入

    也可以延时进行盲注,这里 and or 短路虽然不能确定逻辑,但是可以通过执行后面的if条件来进行延时

    这里还学到了一点limit后面的注入方法:

    如果注入点在limit后面,那么目前唯一的方法是通过procedure analyse来进行注入

    procedure analyse(extractvalue(1,concat(0x7e,user(),0x7e)),1),报错注入的函数应该都可以用

    但是如果没有报错的话,那么procedure后面可以用extractvalue+benchmark来进行延时注入,也可以用updatexml+benchmark,benchmark是执行某个表达式多少次

     

    后面跟上if条件就可以来dump数据进行延时注入了。

    从源码也可以看到注入点在此

    LESS47:

    括号的闭合方式变了其他不变了,变为了单引号,其它和46一样,延时的话这里直接用benchmark貌似不起作用,必须结合procedure analyse才能延时,这里直接用sleep就可以

    或者直接报错就可以

    LESS48:

     直接找到逻辑,rand(1),rand(0),这里貌似没有报错,因此可以布尔盲注或者延时注入

    LESS49:

    当注入单引号时页面没有数据了,应该是后面语句出错了,尝试加上注释来进行延时注入,可以成功

    LESS50:

     又开始堆叠注入了,但是并不常见,可以略过,简要从源码分析一下吧,只是变为mutil query,其它不变~

    LESS51:

    括号闭合变为单引号,其它和50相同,报错注入和延时都可以

    LESS52:

    没有print error,不能报错,可以延时注入

    LESS53:

    闭合为单引号,其它与52相同,没有练习的价值

  • 相关阅读:
    linux 还能这么来
    JS还能这么来
    FFmpeg常用命令
    golang gin框架默认打印日志写入到文件 (http请求打印写入到文件而不是控制台)
    社保、新农合介绍以及报销比例介绍
    Lightroom 快捷键集合
    golang map基础使用-初始化
    SOLID
    java dump
    Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  • 原文地址:https://www.cnblogs.com/tr1ple/p/11320217.html
Copyright © 2020-2023  润新知