前言
这道题在解答之前需要先有个知识储备,其中需要得知识储备是php语言以及md5加密得内容,并且为了方便最好再精通一门语言好用来编写脚本
知识储备
php中是一个弱语言,它是一个服务器端得语言(也叫后端语言),属于web端得开发语言,和java差不多,但也不完全一样,在php中有一个函数叫做md5函数,这个函数得基本格式是:
<?php
$a = '123';
echo md5($a,true);
?>
这里就要着重的讲述一下echo md5($a,true)了,这里可以将括号中得true改成false,当然这样一来得出得结果就会被更改,因为一个是以16进制显示,而一个是以2进制显示,当然原来得值不会被影响,这就是php中得md5函数得作用以及使用方式,接下来我们就进入正题了。
解体步骤
当我们进入环境后,只会看见一盘空白得背景和一个文本框和提交按钮,然后,然后就没然后了…
因为刚开始我们也不知道应该做什么操作,而题目也只给出了一个md5得提示,那么我们就线输入一个1看看有没有什么变化:
好家伙,啥都没有,出了多了一个password变量,唉,那就试一试sql注入:
然而,啥都没有,最后无奈之下试一试抓包看返回包得操作:
可以看见这里有一串sql语句,而正因为这串语句才使得我们能够进行下面得操作:
(1)这里先写一个脚本并且利用md5函数跑一下,要得出这个样子得规则
这个字符串就是ffifdyop,这里就能够得出第二个网页了:
这里查看一下源代码就能够看见一个php得代码:
最后我们只需要传输得值符合这个规则就可以了,接下来编写破解第二个网页得payload了:
这样后就能得到第三个网页了:
看来这就是最后一个网页了,现在我们对代码进行分析后就能得出,这里得payload其实和上一个差不多,鹅鹅鹅,然后编写payload并且执行就能得到flag了:
好了,这道题就得出来了,因为难得写解释了,payload这里用数组就能够符合规则了。