代码审计-md5加密相等绕过

<?php
$md51 = md5(‘QNKCDZO‘);
$a = @$_GET[‘a‘];
$md52 = @md5($a);
if(isset($a)){
if ($a != ‘QNKCDZO‘ && $md51 == $md52) {
echo "flag{*}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
?>

要是md51等于md52

PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以“0E”头的哈希值都解释为0

如果两个不同的值经过哈希以后,都是0E开头,那么PHP将会认为他们相同

payload

http://123.206.87.240:9009/13.php?a=s878926199a

flag{bugku-dmsj-am9ls}

部分md5函数0e开头的值

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

原文地址:https://www.cnblogs.com/gaonuoqi/p/11408083.html

时间: 2024-10-10 06:07:11

代码审计-md5加密相等绕过的相关文章

CTF经典题型 md5()函数数组绕过

下面是php源码 <? include_once “flag.php”;ini_set(“display_errors”, 0);$str = strstr($_SERVER[‘REQUEST_URI’], ‘?’);$str = substr($str,1);$str = str_replace(‘key’,”,$str);parse_str($str);echo md5($key1); echo md5($key2);if(md5($key1) == md5($key2) &&

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

【iOS】MD5加密与网络数据安全

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密. MD5算法在国内用的很多. MD5算法的特点: *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经包装好了MD5算法. 可以将其写成字符串的分类: - (NSString *)md5String { const char *string = self.UTF8String; int length = (int)strlen(string)

callback和spring的MD5加密

在javaweb中今天学习到了callback,即回调的意思,刚开始没听懂后面就明白了.回调的意思就是返回来调取页面. 举个例子:当我们访问淘宝网站的时候,当点击购物车的时候,这个时候提示用户登录用户名和密码,登录成功后,会返回到购物车的页面.这就是回调. 它不返回淘宝的首页,而是返回到我们点击的内容所在页面. 在写接口的时候,因为接口是供其他程序调用的,有可能会用到回调的功能,所以一般接口就要求将内容写的全面些.对callback进行包装下. sping的MD5加密: 之前对注册密码的加密是采

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的数据加密的时候遇到了一些问题.起初采取的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采取RSA方式加密.RSA加密时需要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据.(iOS端公钥加密私钥解密.java端公钥加密私钥解密,java端私钥加密公钥解密都容易做到,iOS不

C# 字符串md5加密成16位和32位

#region md5加密 /// <summary> /// MD5 16位加密 加密后密码为小写 /// </summary> /// <param name="ConvertString"></param> /// <returns></returns> private string GetMd5Str16(string ConvertString) { try { using (MD5CryptoServi

[android] 手机卫士保存密码时进行md5加密

一般的手机没有root权限,进不去data/data目录,当手机刷机了后,拥有root权限,就可以进入data/data目录,查看我们保存的密码文件,因此我们需要对存入的密码进行MD5加密 获取MessageDigest信息摘要器对象,调用MessageDigest.getInstance(“md5”),参数:规则 调用MessageDigest对象的digest(bytes)方法,得到加密的byte[] 数组,参数:byte[] 数组,调用String对象的getBytes()方法获取到字节数

4、C#进阶:MD5加密、进程、线程、GDI+、XML、委托

MD5加密 将字符串进行加密,无法解密.网上的解密方式也都是在库里找,找不到也没有. 1 protected void Page_Load(object sender, EventArgs e) 2 { 3 string s = "123"; 4 Response.Write(getMd5(s)); 5 } 6 public string getMd5(string str) 7 { 8 MD5 md5 = MD5.Create();//MD5抽象类无法实例化 实例化该方法 9 byt

终于实现VB.NET MD5加密

VB.NET MD5加密想着这个功能很普遍,就在网上找了一个代码 '对strSource进行转码,然后再变成大写,再进行加密 Function MD51(ByVal strSource As String, ByVal Code As Int16) As String Dim dataToHash As Byte() dataToHash = (New System.Text.UTF8Encoding).GetBytes(UCase(URLEncode(strSource))) Dim hash