欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > BUUCTF-web刷题篇(10)

BUUCTF-web刷题篇(10)

2025/7/7 13:28:44 来源:https://blog.csdn.net/m0_65853019/article/details/146998918  浏览:    关键词:BUUCTF-web刷题篇(10)

19.EasyMD5

md5相关内容总结:

①string md5(&str,raw) $str:需要计算的字符串; raw:指定十六进制或二进制输出格式。计算成功,返回md5值,计算失败,返回false。

raw参数为true:16个字符的二进制格式; false:(默认)32个字符的十六进制格式。如果在项目中遇到MD5加密结果不一致的问题,可以观察两个加密结果的长度是否相同,比如一个结果是16位,而另一个结果是32位,这种情况就可以考虑更换输出格式来解决。

②基础使用:echo md5('hello')

科学计数法(0e绕过):MD5遇到公式,会先运算,再对运算结果计算MD5。由于0和任何数相乘都等于0,所以0e开头的任何数,其MD5值都是相同的。补充:0e是科学计数法,大小写等价。aeb=a*10^b。

绕过思路1:遇到弱比较(md5(a)==md5(b))时,可以使用0e绕过。

var_dump(md5(0e123) === md5(0e456)); var_dump(md5(0e123) == md5(0e456));

绕过思路2:遇到弱比较(md5(a)==0),可以传入QNKCDZO等绕过。

echo md5('QNKCDZO').PHP_EOL; var_dump(md5('QNKCDZO') == 0);

一些MD5值为0e开头的字符串:

QNKCDZO => 0e830400451993494058024219903391 240610708 => 0e462097431906509019562988736854 s878926199a => 0e545993274517709034328855841020 s155964671a => 0e342768416822451524974117254469 s214587387a => 0e848240448830537924465865611904 s214587387a => 0e848240448830537924465865611904

③数组类型(数组绕过)

md5()不能处理数组,数组都返回null,同时会报一个warning,不影响执行。

绕过思路:遇到强比较(a===b)时,可以使用数组绕过。GET传参时,以a[]=1&b[]=2这种形式传递数组。

$a = array(1,2,3); $b = array(4,5,6); var_dump(md5($a)===md5($b));

④算数运算配合自动类型转换

md5()遇到运算符,会先运算,再计算结果的md5值。

当字符串与数字类型运算时,会将字符串转换为数字类型,再参与运算,最后计算运算结果的MD5值。

⑤数值类型

虽然md5()要求传入字符串,但传入整数或小数也不会报错;数字相同时,数值型和字符串的结果是相同的。

解题过程:

输入什么都不管用,网页源代码也没啥,bp抓包,发送到repeat,得到:

发现数据在写入数据库之前,使用了md5加密,我们在输入框中提交ffifdyop,会出现:

而在mysql中,在用作布尔型判断时,以数字开头的字符串会被当成整型,不过由于是字符串,因此后面必须有单引号括起来的,比如:'xxx'or'6xxxx',就相当于'xxx'or 6,就相当于'xxx'or true,所以返回值是true。

所以,查询语句会变成:

Select * from xxx where user='admin' and password=' 'or'6xxxxx'

也就是password=' 'or true=true

进入页面后,打开网页源码可看到注释信息,这里是一个弱比较:

$a = $GET['a']; 
$b = $_GET['b']; 
if($a != $b && md5($a) == md5($b)){ 
// wow, glzjin wants a girl friend.

使用数组绕过或科学计数法绕过都可以(GET方式传递):

数组绕过:a[]=1 &b[]=2

或者科学计数法绕过 a=0e111 &b=0e333

上传后发现包含flag.php文件。

发现有强比较===,用bp以POST方式传输param1和param2两个参数。

使用数组绕过:param1[]=1 &param2[]=2

bp使用post方式还要加Content-Type:application/x-www-form-urlencoded

直接得到flag。

或者使用检查中的hackbar

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词