mysql注入学习笔记
第一节 information_schema
在注入中,我们想跨库查询,搜索别的数据库的数据。就需要确定库名->表名->字段名,依照这个顺序来搜索到我们想要的数据。需要注意的是查询information_schema的权限需要比较大才可以。
通常我们在数据库命令行中获取库名表名字段名的方式是这样的:
1 |
|
但是在sql注入中,我们是在现有的语句中注入查询,这些被注入的语句一般是select,无法使用show命令,所以我们需要使用select来获取整个数据库中库名表名等信息。而information_schema这个表里刚好存有所有的库名和表名,于是我们就可以通过select查询这个表来获取相关信息。
库名相关信息在schemata这个表中,所以通过information_schema.schemata查所有数据库:
1 |
|
表名相关信息 在tables这个表中,所以通过information_schema.tables查所有的表名
1 |
|
也可以用上一步查到的库名作为条件来筛选,在后面加上where table_schema='mysql'
但如果有WAF的话可能会阻止或过滤掉引号,那我们可以用库名的十六进制格式来代替xxx的部分,可以用select hex('xxx')
来获取十六进制的库名,如“mysql”= “0x6D7973716C”,所以上面的语句变为where table_schema=0x6D7973716C
就可以绕过WAF了。
查字段名在columns这个表中,用以下语句来查字段名:
1 |
|
mysql注入学习笔记
https://wanf3ng.github.io/2021/02/01/mysql注入学习笔记/