CTF-web 哈希(MD5)绕过问题

Agioni 2024-08-01 14:03:03 阅读 97

哈希绕过问题其实是弱类型问题的实际应用,本质上也是应用弱类型来解题。

0e绕过

两个数不相等,但是他们的哈希值相等

有三种解决办法:数组,0e(0e32478383和0e2378238372是本身不相等但是是弱相等。注意e后面不能有字母。

以下是一些0e开头的md5值

<code>s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

s1502113478a

0e861580163291561247404381396064

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s155964671a

0e342768416822451524974117254469

s1184209335a

0e072485820392773389523109082030

s1665632922a

0e731198061491163073197128363787

s1502113478a

0e861580163291561247404381396064

s1836677006a

0e481036490867661113260034900752

s1091221200a

0e940624217856561557816327384675

s155964671a

0e342768416822451524974117254469

s1502113478a

0e861580163291561247404381396064

s155964671a

0e342768416822451524974117254469

s1665632922a

0e731198061491163073197128363787

s155964671a

0e342768416822451524974117254469

s1091221200a

0e940624217856561557816327384675

s1836677006a

0e481036490867661113260034900752

s1885207154a

0e509367213418206700842008763514

s532378020a

0e220463095855511507588041205815

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s214587387a

0e848240448830537924465865611904

s1502113478a

0e861580163291561247404381396064

s1091221200a

0e940624217856561557816327384675

s1665632922a

0e731198061491163073197128363787

s1885207154a

0e509367213418206700842008763514

s1836677006a

0e481036490867661113260034900752

s1665632922a

0e731198061491163073197128363787

s878926199a

0e545993274517709034328855841020

数组绕过

有的时候要求我们强相等,那么我们该怎么办呢

那么就要用到数组了,因为md5要求要用字符串,你数如字符串会给你·md5值,但是如果是数字组则会爆出null,因此要满足上述条件,那么我们就可以输入两个数组,他们的md5值都会包null,那么他们的md5值便可以相等。也叫做数组绕过。

那么接下来比如我们在get一个参数a时候,怎么样去传入一个数组呢,因为我们在url后面加入?a=123,则他传入的还是字符串,我们只需要在传参的时候写成?a[]=123,那么就传入了一个数组。加入我们要传入多个数组,我们只需要要在凉饿数组之间加上&。

下面有一个题目:

第一步:要求我们通过url传入一个$a的数组

第二步:他会严格过滤掉a[0],a[1]。

第三步:取前$a前两个元素进行拼接,执行危险命令。

那么我们怎么办呢,我们可以在输入数组时候,先输入a[2],a[3]。再输入a[0],a[1],其中2和3都是要执行的危险命令,而0和1则是正常数值。那么他会过滤0 和1 ,但是前两个元素却被保留。进行危险命令。

md5碰撞

接下来是第三种情况,要求ab都是字符串,但是后面是强相等

那么就只能进行md5碰撞了,即两不同的东西有相同的md5(原因是由于md5他的运算是由限制位数的运算,因此不能不重复的表示所有的信息,那么就会导致两个不同的信息但是他们的md5是相同的)

MD5碰撞-CSDN博客

icon-default.png?t=N7T8

https://blog.csdn.net/qq_64201116/article/details/126493091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172180026616800182194548%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172180026616800182194548&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-126493091-null-null.142%5Ev100%5Epc_search_result_base2&utm_term=md5%E7%A2%B0%E6%92%9E&spm=1018.2226.3001.4187

后面的是php的另外两种绕过,图片截取自CTF_Web:php弱类型绕过与md5碰撞_php substr绕过-CSDN博客

json绕过

array_search 绕过

CTF例题

打开源代码如上,要求我们数入一个md5参数,经过md5加密后和原来的保持一致。

这里一定要注意他要求输入的md5相当于一个参数,并不是md5值。因此我们只需要输入一个0e???的值,他md5后的值也是0e?????。就可以解出,我们需要取自己写一个脚本或者网上搜索。诸如以下。

随便选取一组,进行get就可以的到flag。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。