[BJDCTF2020]Easy MD5 1

[BJDCTF2020]Easy MD5 1

打开实例是个输入查询框,根据题目判断这题跟MD5加密有关

image-20241106220708235

查看源代码发现表单采用GET提交到本页面

image-20241106220744973

尝试请求抓包一波

image-20241106221334426

哦豁,回显发现头信息有个sql语句

image-20241106221430865

这边只要让where条件变成true就行,第一时间考虑到万能密码' or true'这种的,由于MD5的不可逆性质,所以只能采用脚本遍历(在用作布尔型判断时,以数字开头的字符串会被当做整型数),所以这道题需要遍历出md5包含'or数字这种格式的字符串。

脚本,(包含'or的输出,否则输出.

<?php
for ($i = 0; ; ) {
    for ($c = 0; $c < 1000000; $c++, $i++)
        if (stripos(md5($i, true), '\'or\'') !== false)
            echo "\nmd5($i) = " . md5($i, true) . "\n";
    echo ".";

A thousand years......(鬼知道我这里跑了多久)

image-20241106225135030

太漫长了跑不出来,实例都快关了,直接百度搜索MD5万能密码

image-20241106225642426

哟西这就是我想要的,payload:

?password=ffifdyop

成功跳转新页面,但是还是没有flag

image-20241106225756268

查看源代码,发现注释要求变量a不等于b的同时MD5a要等于MD5b

image-20241106225925260

数组绕过,payload:

?a[]=a&b[]=b

成功跳转(怎么还有!!)

image-20241106230435037

代码审计,要求POST传参,还是一样两个参数不等,md5相等,数组绕过秒了

param1[]=param1&param2[]=param2

image-20241106231150127

flag{598c2b3e-e118-47a3-8d31-5bc7d4426305}

posted @ 2024-11-08 18:46  TazmiDev  阅读(500)  评论(0)    收藏  举报