网页显示了原始 php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
highlight_file(__FILE__);
include 'flag2.php';
if (isset($_GET['name']) && isset($_POST['password'])){
$name = $_GET['name'];
$password = $_POST['password'];
if ($name != $password && md5($name) == md5($password)){
echo $flag;
}
else {
echo "wrong!";
}
}
else {
echo 'wrong!';
}
?>
|
经典一个 GET 方法一个 POST 方法。
1
2
|
if ($name != $password && md5($name) == md5($password)){
echo $flag;
|
需要在保证它们不相同的情况下,它们的 md5() 处理后的值可以通过弱类型比较==
md5() 计算字符串的 md5 哈希值,并返回其哈希值。
对于 php7 及之前版本,可以用 0e 处理完全识别为科学记数法的数字。
当两边都是字符串例如:0e462, 0e830 php 就会把两个字符串内容都看作数字,将其转换为数字再比较变成了 0。
比如:
name = 240610708
password=QNKCDZO
还有一种方法是使用数组绕过。 md5 函数无法处理数组参数,传入一个数字会返回 NULL。
可以使用:
上面用 hackbar 传参即可。