当前位置: 首页 > news >正文

【web | CTF】BUUCTF [BJDCTF2020]Easy MD5

天命:好像也挺实用的题目,也是比较经典吧

天命:把php的MD5漏洞都玩了一遍

第一关:MD5绕过

先声明一下:这题的MD5是php,不是mysql的MD5,把我搞迷糊了

一进来题目啥也没有,那么就要看源码和抓包了

在响应头发现sql语句

经分析,这sql语句半真半假,应该是这样子的

$sql = "select * from test.admin where password='".md5($str,true)."'";

大坑:里面的md5函数是php的

参加加个true就是输出16位的二进制,正常显示绝逼是乱码的,所以也不需要echo看了

这里就是需要经过md5加密后,依旧可以进行sql注入

网上说:ffifdyop 的MD5加密结果是 276f722736c95d99e921722cf9ed621c

经过MySQL编码后会变成'or'6xxx,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密

其实一开始还不理解,然后自己写了一个测试真假

现在mysql测试

然后放入php代码测试

居然是真的,原理就是这样子,只要有东西,就算是true,那就忽略密码直接判断为true

这里好像说是MySQL特性,只有数字在开头才算有东西,字母在前面是没东西的,所以6xxx刚好算是有东西,判定为 true

所以只需要把 ffifdyop 输入进去就完事

第二关:弱比较MD5绕过

来到第二个页面,啥也没有,照旧两步骤,看源码和抓包

看到了隐藏的php源码

$a = $_GET['a'];
$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){echo "wow, glzjin wants a girl friend";
}

这里难点就是不一样的情况下都采用md5加密,并比较,还好有个漏洞,就是弱比较大漏洞

两个等号的情况下 == ,只要是0e开头,都会当成科学计数法,无论是0的多少次方,通通都是0

那么找两个md5加密后是0e开头的内容就可以了

一搜一大堆,搞掂,下一关

第三关:php特性绕过MD5

这关已经超出我认知范围了,原来MD5这个函数只比较字符串,其他一律不管

我们传进去的是数组,那么两个变量就肯定不相等,但md5函数识别不了数组,当成是同一个数组进行加密,那得到的结果肯定一样啊,这个属于php的md5漏洞了吧

flag{a2a7fba8-9c7d-4ffa-8d1f-47781db64c89}

http://www.lryc.cn/news/301342.html

相关文章:

  • spring boot Mybatis Plus分页
  • elementui 中 el-date-picker 控制选择当前年之前或者之后的年份
  • GlusterFS:开源分布式文件系统的深度解析与应用场景实践
  • 第6个-滚动动画
  • 配置oracle连接管理器(cman)
  • [N-142]基于springboot,vue停车场管理系统
  • DAY53:动态规划(买股票的最佳时机)
  • 快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码
  • 外汇110:外汇做空是什么意思?如何运作?一文读懂
  • 【记录】个人博客或笔记中的数学符号设定
  • Redis Sentinel工作原理
  • GEE入门篇|遥感专业术语:理论介绍
  • react中如何做到中断diff过程和恢复
  • python:PyPDF2 从PDF文件中提取目录
  • Java 2:运算符、表达式和语句
  • 批量提取word文件中文本框内容的三种方法
  • Leecode之合并两个有序链表
  • 陶建国教授谈中西方文化的差异与交融
  • Ps:画笔选项
  • 嵌入式——Flash(W25Q64)
  • stm32:pwm output模块,记录一下我是用smt32,输出pwm波的记录--(实现--重要)
  • phpstrom创建thinkphp项目
  • 【Linux】线程同步
  • 如何在多头自注意力机制的交叉学习中引入对于物理、生理、心理世界客观规律的对照验证...
  • 智慧公厕:让智慧城市的公共厕所焕发“智慧活力”
  • vue导出word文档(图文示例)
  • 【C Primer Plus第六版 学习笔记】 第十七章 高级数据表示
  • 租用一个服务器需要多少钱?2024阿里云新版报价
  • python-产品篇-游戏-成语填填乐
  • 数据库数据加密的 4 种常见思路的对比