0x01 阅读须知
鸡哥安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
0x02 函数/特性说明
1.php中的==特性
md5加密后以0e开头的在进行‘==’运算时,php会认为他们都为0。
2.md5()函数
md5 — 计算字符串的 MD5 散列值
0x03 MD5弱类型比较绕过解析
1.当我们传入payload:?a=s1885207154a,路由过程如下
代码第1-10行:使用md5加密QNKCDZO,并用过$a变量接收$_GET['a']传递过来的参数,通过md5加密位$md52。判断加密的QNKCDZO的值和传递来的值是否相等,相等输出flag,不相等输出false。这里我们输入的值s1885207154a,md5加密后的值和QNKCDZO前两位一样,在php==中,0e为0,所以相等pass,输出flag。DEBUG:$a: "s1885207154a" $md51:0e830400451993494058024219903391 $md52:0e509367213418206700842008763514
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
原文始发于微信公众号(鲲哥的Bypass之旅):奇淫巧计 md5弱类型比较绕过
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论