CTF——MD5总结

1.MD5简介

MD5是一种常见的加密方式,但准确来说,它只是一种编码方式,它将任意有限长度的字符串通过哈希函数转换为特定长度的字符串。

MD5编码具有单向性,即由明文变密文简单,由密文变明文困难。

破解时只能通过暴力破解即穷举法

所以基于这个特性,MD5可以有效保证信息的完整性,当文件进行一点点的修改,MD5值都会有很大的改变。

MD5生成的密文由2进制表示——128位构成

由16进制表示——32位(大小写)16位(大小写)

2.弱类型比较的MD5绕过

v1!=v2,md5(v1)==md5(v2)
利用php弱类型比较的特点,构造v1,v2使得他们的MD5值开头都为0e,php会认为是科学计数法不管后面是什么都是0的次方,最终判定为相等。
以下为最常用的两个字符串

字符串MD5值
NKCDZO0e830400451993494058024219903391
406107080e462097431906509019562988736854

3.强类型比较的MD5绕过

v1!=v2,md5(v1)===md5(v2)
绕过方法:数组绕过:a[]=a&b[]=b,传入参数为数组则MD5返回NULL,NULL是一种特殊类型
最后可能会报错,但是null=null,判断为true,成功绕过

4.MD5构造攻击语句

典型的构造sql注入语句
构造or语句绕过:

md5(ffifdyop,true)='or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
md5(129581926211651571912466741651878684928,true)=\x06\xdaT0D\x9f\x8fo#\xdf\xc1’or’8

例题【BUUCTF】Easy MD5
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值