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

[MRCTF2020]Ez_bypass

BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。 https://buuoj.cn/challenges#[MRCTF2020]Ez_bypass启动靶机

有提示F12,那查看一下源码。和页面显示的代码一样的,就是格式更规范而已

include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {$id=$_GET['id'];$gg=$_GET['gg'];if (md5($id) === md5($gg) && $id !== $gg) {echo 'You got the first step';if(isset($_POST['passwd'])) {$passwd=$_POST['passwd'];if (!is_numeric($passwd)){if($passwd==1234567){echo 'Good Job!';highlight_file('flag.php');die('By Retr_0');}else {  echo "can you think twice??"; }}else{   echo 'You can not get it !';}}else{ die('only one way to get the flag');}
}else { echo "You are not a real hacker!"; }
}else{  die('Please input first');}
}  You are not a real hacker!

代码讲述了get方法传递两个参数 gg 和 id ,使得它们的MD5值 强相等(===),但它们本身值并不相同。

而且使用post方法传递了一个 passwd 参数,并且需要确保这个参数值不是纯数字,还得使得参数值与 1234567 弱相等(==)

那么我们首先构造url传参 :?gg[]=s878926199a&id[]=s155964671a

解释一下:为什么这里我们参数传递的是数组,而不是直接传递字符串?

 

由于代码要求两个参数值的MD5值要 强相等(===)

        如果我们传递的是?gg=s878926199a&id=s155964671a

        那么这两个值的MD5分别是

                0e545993274517709034328855841020

                0e342768416822451524974117254469

        在进行比较时,这两个值是不相等的,就会返回 false

        然鹅当传递的值是数组时,进行MD5运算,两个都会返回Null   

        null===null  返回 true

 

如果,代码中MD5值的比较使用的是 弱相等(==)

那么就可以直接传递字符串

        原因是在弱比较时,php会将 0e 开头的字符串解释为科学计数法的 0。

        并且如果 0e 后续全是数字的话,php会认为它们是相等的

再使用post方法传递     passwd=1234567\    

1234567\ 

1234567a

1234567+

1234567- 

1234567*  

都可以(不要使用 . 会被看成是小数点)

这样写 是因为使用的是弱相等 

当php看到一个字符串与一个数字进行弱比较时,它会将这个字符串看成一个数字,当读取到非数字的部分它就会停止,所以这些非数字字符得放在1234567的后面

获得flag{5ab68b16-b084-4f10-8530-06f5726d5f53}

 


文章转载自:

http://9gflX9e8.qrcLz.cn
http://C35pthz9.qrcLz.cn
http://5TqKbElI.qrcLz.cn
http://GvYpzEHb.qrcLz.cn
http://HPNy61j7.qrcLz.cn
http://SoYeozN1.qrcLz.cn
http://ZNublCwP.qrcLz.cn
http://Nq67kOcR.qrcLz.cn
http://QrK9N0aP.qrcLz.cn
http://AuspajZK.qrcLz.cn
http://zcvqWQfW.qrcLz.cn
http://28rm56er.qrcLz.cn
http://RvYAZxRt.qrcLz.cn
http://nhWbXOl3.qrcLz.cn
http://0RJK0zcE.qrcLz.cn
http://vsI3yZZC.qrcLz.cn
http://ZV3MyEox.qrcLz.cn
http://1DlTlCPb.qrcLz.cn
http://P1KK1Afq.qrcLz.cn
http://H0cWUZ4W.qrcLz.cn
http://n8LA0LU1.qrcLz.cn
http://50O6pSbz.qrcLz.cn
http://Tz2pxKT5.qrcLz.cn
http://pavPDESV.qrcLz.cn
http://Td7Z0GGv.qrcLz.cn
http://qstPBVrP.qrcLz.cn
http://ZCFqqrfj.qrcLz.cn
http://puVXK6t8.qrcLz.cn
http://dypc69m9.qrcLz.cn
http://qmvX6bac.qrcLz.cn
http://www.dtcms.com/a/366237.html

相关文章:

  • 分布式微服务--单体架构 ,垂直架构 ,分布式架构 ,SOA ,微服务 以及他们之间的演变过程
  • 人月神话今犹在:从布鲁克斯法则到阿里云AI代码生成
  • 孩子学手机里的坏毛病,怎样限制他打开某些APP?
  • [免费]基于Python的Django+Vue图书借阅推荐系统【论文+源码+SQL脚本】
  • 2025年人工智能政策剖析:GEO新赛道,硕芽科技助力前行
  • 光谱相机在手机行业的应用
  • 怎样让外网计算机访问局域网计算机?通过公网地址访问不同内网服务的设置方法
  • 在 ASP.NET Core 8 Web API 中实现基于角色的授权 安全且可扩展 API 的最佳实践
  • 安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
  • 基于阿里云部署 RustDesk 自托管服务器
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(下)
  • 从根源破解“找不到 vcruntime140.dll 无法执行”问题:原因分析、安全修复工具推荐及预防指南
  • 服务器监控不用盯屏幕:Ward+Cpolar让异常告警主动找到你
  • 【LeetCode热题100道笔记】旋转图像
  • 从零开始的云计算生活——第五十八天,全力以赴,Jenkins部署
  • [Linux] Linux标准块设备驱动详解:从原理到实现
  • 如何将两个网段互相打通
  • ⸢ 肆 ⸥ ⤳ 默认安全:安全建设方案 ➭ b.安全资产建设
  • 算法模板(Java版)_字符串、并查集和堆
  • 云数据库服务(参考自腾讯云计算工程师认证课程)更新中......
  • 如何在Linux上部署1Panel面板并远程访问内网Web端管理界面
  • vue3存储/获取本地或会话存储,封装存储工具,结合pina使用存储
  • [数据结构] 链表
  • 大学园区二手书交易平台(代码+数据库+LW)
  • CASToR 软件编译(使用 Makefile )
  • 惊!printf 不往屏幕输?都是 fd 在搞鬼!爆肝拆解 Linux 文件描述符 + 重定向底层,学会直接在终端横着走
  • NIPT 的时点选择与胎儿的异常判定
  • Spring Boot 启动卡死:循环依赖与Bean初始化的深度分析
  • Web与Nginx网站服务
  • 如何导出 手机中的APK并查看清单文件