[BJDCTF2020]Easy MD5
![[BJDCTF2020]Easy MD5](http://pic.ttrar.cn/nice/%5bBJDCTF2020%5d.jpg)
[BJDCTF2020]Easy MD5
进入靶场:
![[BJDCTF2020]Easy MD5](https://img-blog.csdnimg.cn/2c7fbfec30f1407a85a887a627bbc6cc.png)
-
只有一个输入框,先看看源码…
-
好像没啥东西
-
看一眼数据包。
![[BJDCTF2020]Easy MD5](https://img-blog.csdnimg.cn/7af736f08c814e91b7cbab86d2cb2642.png)
-
Response Header中有一个hint
-
是一个SQL语句,看来是一个SQL注入
-
select * from 'admin' where password=md5($pass,true):只需要将password这边变成永真就行了,' or '... -
ffifdyop这个字符串被 md5 哈希了之后会变成276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是' or '
绕过第一步之后,接着来到了第二步:
![[BJDCTF2020]Easy MD5](https://img-blog.csdnimg.cn/b728d7d1dff04211ad124aa94dc51561.png)
还是先看下源代码:
<!--
$a = $GET['a'];
$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){// wow, glzjin wants a girl friend.
-->
$a = $GET['a']; $b = $_GET['b'];:需要GET方式传入两个参数a和b- 要满足a不等于b但是md5加密之后两个参数弱相等。
- 这里可以用数组的形式去绕过:
?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;
}
$_POST['param1']!==$_POST['param2']:需要POST方式提交两个参数param1和param2- 两个参数不能相等,但是md5转换后的值还要相等,和第二步一样的处理方式。
![[BJDCTF2020]Easy MD5](https://img-blog.csdnimg.cn/e39bb2d8d40849d2a90374c5b2f728d5.png)
GET Flag !!!


