总结ctf中 MD5 绕过的一些思路

  • 1. 常规的0e绕过
  • 2. 数组绕过
  • 3. 强类型绕过
  • 4. \$a==md5($a)
  • 5. md5 与SQL注入
  • \$a !== $b && md5(\$a) === md5(\$b) && sha1(\$a) === sha1(\$b)

1. 常规的0e绕过

  • QNKCDZO
  • 240610708
  • s878926199a
  • s155964671a
  • s214587387a
  • s214587387a
这些字符串的 md5 值都是 0e 开头,在 php 弱类型比较中判断为相等

2. 数组绕过

如下代码

var_dump(md5($_GET['a']) == md5($_GET['b']))

传入

a[]=a&b[]=b

虽然会报错,但是判断为真

可以看到,MD5一个数组返回了null,null==null,成功绕过


3. 强类型绕过

if((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b']))

[安洵杯 2019]easy_web(buu有环境) 的源码,第一次遇到这个,我直接懵逼

上面的方法都不能用了,百度了一番才知道还有强类型绕过(这应该是md5碰撞了)

payload如下:

a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

进行url解码后的MD5值相等

收录一些MD5值相等的字符串

$Param1="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x00\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\x55\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
$Param2="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x02\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\xd5\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";

$data1="\xd1\x31\xdd\x02\xc5\xe6\xee\xc4\x69\x3d\x9a\x06\x98\xaf\xf9\x5c\x2f\xca\xb5\x07\x12\x46\x7e\xab\x40\x04\x58\x3e\xb8\xfb\x7f\x89\x55\xad\x34\x06\x09\xf4\xb3\x02\x83\xe4\x88\x83\x25\xf1\x41\x5a\x08\x51\x25\xe8\xf7\xcd\xc9\x9f\xd9\x1d\xbd\x72\x80\x37\x3c\x5b\xd8\x82\x3e\x31\x56\x34\x8f\x5b\xae\x6d\xac\xd4\x36\xc9\x19\xc6\xdd\x53\xe2\x34\x87\xda\x03\xfd\x02\x39\x63\x06\xd2\x48\xcd\xa0\xe9\x9f\x33\x42\x0f\x57\x7e\xe8\xce\x54\xb6\x70\x80\x28\x0d\x1e\xc6\x98\x21\xbc\xb6\xa8\x83\x93\x96\xf9\x65\xab\x6f\xf7\x2a\x70";
$data2="\xd1\x31\xdd\x02\xc5\xe6\xee\xc4\x69\x3d\x9a\x06\x98\xaf\xf9\x5c\x2f\xca\xb5\x87\x12\x46\x7e\xab\x40\x04\x58\x3e\xb8\xfb\x7f\x89\x55\xad\x34\x06\x09\xf4\xb3\x02\x83\xe4\x88\x83\x25\x71\x41\x5a\x08\x51\x25\xe8\xf7\xcd\xc9\x9f\xd9\x1d\xbd\xf2\x80\x37\x3c\x5b\xd8\x82\x3e\x31\x56\x34\x8f\x5b\xae\x6d\xac\xd4\x36\xc9\x19\xc6\xdd\x53\xe2\xb4\x87\xda\x03\xfd\x02\x39\x63\x06\xd2\x48\xcd\xa0\xe9\x9f\x33\x42\x0f\x57\x7e\xe8\xce\x54\xb6\x70\x80\xa8\x0d\x1e\xc6\x98\x21\xbc\xb6\xa8\x83\x93\x96\xf9\x65\x2b\x6f\xf7\x2a\x70";


4. $a==md5($a)

0e215962017 的 MD5 值也是由 0e 开头,在 PHP 弱类型比较中相等


5. md5 与SQL注入

buu easy_md5

当 md5 函数的第二个参数为 true 时,返回为 字符串

一个特殊的 md5 值:ffifdyop


$a !== $b && md5($a) === md5($b) && sha1($a) === sha1($b)

利用 Exception 类中的 __toString() 方法返回的字符串相同,返回值只有第一个参数和行号可变,所以只要保持第一个参数相同且在同一行实例化,就能保证 a、b 作为字符串使用的时候相等,但是如果第二个参数(int)不同,他们作为对象比较时就不相等,可以满足上面的条件

php5:
php5 中不能直接执行变量 a、b,继续看 php7

php7:
php7 正常执行

php5中可以看作执行如下文件

<?phpexception 'Exception' with message 'phpinfo();
?>

显然不是一个合法的 php 文件

继续看 php7

<?phpException:phpinfo();//goto Exception;
?>

为了便于理解,我加了一个 goto 的注释,也就是说 Exception 被当作了标签,是合乎 php 语法的,可以被正常运行

总结ctf中 MD5 绕过的一些思路相关推荐

  1. ctf中MD5绕过详细总结及例题[BJDCTF2020]Easy MD5

    一.首先是MD5()函数的作用? MD5()函数的作用是计算字符串的MD5散列. 返回值:如果成功则返回已计算的 MD5 散列,如果失败则返回 FALSE. 二.PHP == 弱类型比较绕过? 代码: ...

  2. php mysql 绕过_PHP中md5绕过

    一.md5($password,true)的SQL注入问题 这里要提到一下MySQL中的数值比较问题. 1.当数字和字符串比较时,若字符串的数字部分(需要从头开始)和数字是相同的,那么则返回的是tru ...

  3. 浅谈CTF中各种花式绕过的小trick

    文章目录 浅谈CTF中各种花式绕过的小trick 前言 md5加密bypass 弱比较绕过 方法一:0e绕过 方法二:数组绕过 强比较绕过 方法:数组绕过 md5碰撞绕过 方法:使用Fastcoll生 ...

  4. CTF:PHP MD5绕过和序列化漏洞

    CTF:PHP MD5绕过和序列化漏洞 作者:高玉涵 博客:blog.csdn.net/cg_i 时间:2021.6.25 9:51 题目复现Docker环境: https://github.com/ ...

  5. CTF中的md5弱类型(ALL_IN_ONE)

    CTF中的md5 文章目录 第一种情况,md5弱类型比较 第二种情况,md5强类型比较 第三种情况,md5碰撞 第四种情况,sql语句 md5值暴破 md4 md2 sha1 其他特殊的hash值(m ...

  6. 【CTF bugku 备份是个好习惯】关于.bak备份文件,md5绕过

    知识点 常用的备份文件后缀有 .bak, .swp bak是备份文件的扩展名,现在很多软件都会创建备份文件,bak文件是各类软件产生的备份文件.打开bak文件的方法有简单,只需要知道它的生成软件,然后 ...

  7. php字符长度函数漏洞 ctf,CTF中常见php-MD5()函数漏洞

    CTF中常见php-MD5()函数漏洞 1.数字与字符串之间的比较 var_dump( 0 == "a" ); var_dump( "0" == "a ...

  8. ctf中的php序列化与反序列化

    ctf中的php序列化与反序列化 刚开始学的php序列化与反序列化,有点雨里雾里的,于是做个笔记~~ 首先我们来了解一下概念知道他是怎么样的一个东西: 序列化(串行化):是将变量转换为可保存或传输的字 ...

  9. python 字节流分段_一文掌握CTF中Python全部考点

    声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! 前 言 一次偶然的机会,让自己 ...

最新文章

  1. 解析深度学习:语音识别实践电子书
  2. 怎么请假显智商高?评论区亮了! | 每日趣闻
  3. 阿里云安装LNMP以及更改网站文件和MySQL数据目录
  4. php加密 dll扩展,PHP的openssl加密扩展使用小结(推荐)
  5. 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份
  6. Adobe Flash Player 10.0.32.18
  7. Javascript事件委托
  8. C#中使用Directory实现对文件夹的常用操作
  9. 工作中必须要知道的git高级用法
  10. 补题Codeforces 1102E. Monotonic Renumeration
  11. 刚毕业的ERP实施顾问做甲方
  12. P7515-[省选联考 2021A卷]矩阵游戏【差分约束】
  13. 网络安全技术之端口隔离
  14. CV_LOAD_IMAGE_COLOR 和 CV_BGR2RGBA找不到定义
  15. CISCO发现协议(CDP)理论与实验
  16. mysql分页查询公式
  17. oracle北京时区,ORACLE中的时区(time zone)
  18. 渗透测试-业务逻辑与非常规漏洞原理与利用
  19. java动态代理三座大山InvocationHandler、newProxyInstance()和invoke()
  20. “剧情+综艺” 助推国潮文化破圈

热门文章

  1. vim 中:wq和:wq的不同之处
  2. 全自动打码软件与人工打码的区别
  3. abbplc型号_ABB PLC选型手册.pdf
  4. android框架服务 恶意软件,Android平台各类恶意软件及病毒概览
  5. 微信小程序实现录音格式为mp3,并上传到云开发环境
  6. python异常处理的作用_Python 中的异常处理方式
  7. Ant Design of Vue @1.7.8 学习笔记(Vue2版本)
  8. 管理书单 | 10本经典的管理学书籍推荐
  9. Ubuntu笔记本屏幕亮度调节问题
  10. Git命令之批量分支