BJDCTF2020Easy MD5

考点:sql注入(万能密码) 数组绕过md5 md5碰撞

[BJDCTF2020]Easy MD5

  • 考点:sql注入(万能密码) 数组绕过md5 md5碰撞

  • 只有一个输入框和提交

  • 在响应头处找到提示信息

  • 查一下md5函数的用法

  • 所以sql语句是把密码用16字符二进制比对,试着构造一个万能密码

  • 如果通过md5之后返回字符串是’or 1的话,形成一个永真条件,select * from ‘admin’ where password=’ 'or ‘6…’

  • 这个可以用ffifdyop绕过

  • ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ’ or ‘6而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’’ or ‘6xxxxx’,等价于 or 一个永真式,因此相当于万能密码,可以绕过md5()函数。

  • 然后进入新页面

  • 在页面源代码中有注释的一个类型比较(MD5碰撞)

  • 要求值不等但是md5相等

  • payload:?a[]=QNKCDZO&b[]=s878926199a

  • 因为md5转换后只要是0e开头,弱类型比较会认为是科学计数法,但是0e开头无论后面是什么,都等于0,从而绕过

  • 然后进入新的页面

  • 和刚才的不同,这次md5的比较用的===,md5碰撞就不能用了

  • payload:param1[]=suibianxie1&param2[]=suibianxie2

  • md5不能处理数组,所如果弄数组传值,那么md5会返回null,null===null从而绕过

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值