md5绕过——CTF写题笔记

目录

知识点摘要

[SWPUCTF 2022 新生赛]奇妙的MD5


知识点摘要

一些参考的文章:

MD5碰撞

ffifdyop绕过MD5进行sql注入

md5是一个哈希加密的方式,应用广泛。其中PHP中的md5($str,raw)是一种md5加密的函数,输入一个字符串,后面的参数是TRUE会返回32位,为FALSE则会返回16位。

1.ffifdyop绕过,这一个特殊的字符串经过md5加密后的前几位经过16进制转换字符串得到的是

'or'6xxxxxx

于是在SQL查询中,比如

select * from table_name where id=md5($pwd,true);

则可以使where后成为一个恒等式从而完成绕过,充当了万能密码的作用。

2.php弱类型绕过。

php弱类型比较==会将比较的两个值转换到同一个数据类型再进行比较,不会去比较数据类型。

0e绕过,如果两个字符串的md5开头都是0e,那么都会判定为0从而相等,实现绕过。

MMHUWUV 0e701732711630150438129209816536

MAUXXQC 0e478478466848439040434801845361

IHKFRNS 0e256160682445802696926137988570

GZECLQZ 0e537612333747236407713628225676

GGHMVOE 0e362766013028313274586933780773

GEGHBXL 0e248776895502908863709684713578

EEIZDOI 0e782601363539291779881938479162

DYAXWCA 0e424759758842488633464374063001

还有方式就是使用脚本去跑,能找到两个字符串不同但md5值相同的,也可以在一些题中绕过。这个可以去看第一篇参考的文章。

3.php强类型比较===会连同数据类型一起比较,同时一些解析也被限制了。我们可以使用数组进行绕过。数组绕过是指我们传值的时候传一个数组上去,比如?id[]=1,这个就是使用GET方法传值时候的操作。当md5函数遇到数组之后会返回空值,因为它无法加密数组,于是可以绕过php强类型比较。

[SWPUCTF 2022 新生赛]奇妙的MD5

无论输入什么都没有回显,尝试一下bp抓包

在响应包的表头部分有给我们的hint

select * from 'admin' where password=md5($pass,true)

我们传入ffifdyop绕过

成功跳转到新的界面。

F12查看线索,是md5弱类型绕过,使用0e绕过。

?x=MMHUWUV&y=MAUXXQC

成功来到下一个页面,是个强类型比较,直接使用数组绕过 wqh[]=1&dsy[]=2

得到flag

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值