[BJDCTF2020]Easy MD5 1

最近做了一到有关MD5码的ctf,所以就顺带这道题把之前遇到的有关md5码的知识总结一下。

1、刚开始以为是sql注入,试了一下发现没什么变化,所以就查看页面源码
在这里插入图片描述

这里可以看到,是将我们的输入进行md5加密后再所以sql查询,然后又发现后面的Ture,这时就要去百度一下这个选项的含义
md5(string,raw)
参数 描述
string 必需。规定要计算的字符串。
raw
可选。规定十六进制或二进制输出格式:

TRUE - 原始 16 字符二进制格式
FALSE - 默认。32 字符十六进制数

所以我们可以知道,md5码有两种格式,一个是16字符2进制的,还有一种是32字符16进制的。16字符的可以构造sql注入字符('or '),直接绕过。
在这里插入图片描述
通过python脚本,基本可以知道,'or’这个字符的md5码的32位格式为276f7227,然后后面的位数随机补充,本来想通过python脚本跑出结果,发现太慢了,所以直接看别人的查询字符串,即ffifdyop。
不过我觉的我的脚本思想还是不错的
在这里插入图片描述
在这里插入图片描述
2、输入查询字符串绕过后,出现下图情况
在这里插入图片描述
这里md5进行了弱比较,当为0e开头的会被识别为科学记数法,结果均为0,所以我们只需构造md5码为0e开头的字符串,这里我用了QLTHNDT和QNKCDZO
在这里插入图片描述
输入后会得到如下界面
在这里插入图片描述
这里可以知道它又将md5码换成强比较,此时如果传入的两个参数不是字符串,而是数组,md5()函数无法解出其数值,而且不会报错,就会得到===强比较的值相等

因为要用POST提交,所以我使用burpsuite抓包修改提交
在这里插入图片描述
这里我还要补充一下另外一种md5的比较
在这里插入图片描述
真实md5碰撞,因为此时不能输入数组了,只能输入字符串
所以使用md5碰撞,即两个不同的文件或字符串,它的md5码其实是相同的
这里我找到了一个比较好用的工具可以很方便进行md5碰撞
here
用法
git clone https://github.com/iamjazz/Md5collision.git
cd Md5collision
在本目录中创建一个文本文件。写入任意字符或数字(eg:输入1) 。命名为init.txt
运行fastcoll 输入以下参数。 -p 是源文件 -o 是输出文件
fastcoll_v1.0.0.5.exe -p init.txt -o 1.txt 2.txt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值