Bugku web25 Writeup

Bugku web25 Writeup

题目描述

  • hint:SQL约束攻击

分析

题目提示写得很清楚了,用到的是SQL约束攻击

尝试解题

先随便注册一个账号,然后尝试登陆看看他说啥:

在这里插入图片描述

那么就意味着,只要你是以admin账户登陆的,他就会给flag。

既然已经都给了SQL约束攻击的提示了,就不尝试弱口令爆破了,毕竟这玩意儿挺费时间的。

这里就需要用到SQL约束攻击来以任意身份登陆管理员。

那么这个SQL约束攻击是个啥呢?

原理

百度了大佬的讲解:[基于约束的SQL攻击 - FreeBuf网络安全行业门户]

关键:

在SQL中执行字符串处理时,字符串末尾的空格符将会被删除。换句话说“vampire”等同于“vampire ”,对于绝大多数情况来说都是成立的(诸如WHERE子句中的字符串或INSERT语句中的字符串)例如以下语句的查询结果,与使用用户名“vampire”进行查询时的结果是一样的。

解题姿势

看了原理,就很好理解了,只需要注册一个admin[许多空白符]的用户,然后登陆,就可以拿到flag。

这道题就注册一个admin[空格],就行了。

面对其他情况,根据文章中所说:

对于选择的用户名,前25个字符应该只包含vampire和空白字符,这样做将有助于绕过检查特定用户名是否已存在的查询。

防御

顺便把防御姿势也摘抄MARK一下:

毫无疑问,在进行软件开发时,需要对此类安全漏洞引起注意。我们可采取以下几项措施进行防御:

  1. 将要求或者预期具有唯一性的那些列加上UNIQUE约束。实际上这是一个涉及软件开发的重要规则,即使你的代码有维持其完整性的功能,也应该恰当的定义数据。由于’username’列具有UNIQUE约束,所以不能插入另一条记录。将会检测到两个相同的字符串,并且INSERT查询将失败。

  2. 最好使用’id’作为数据库表的主键。并且数据应该通过程序中的id进行跟踪

  3. 为了更加安全,还可以用手动调整输入参数的限制长度(依照数据库设置)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值