CTF夺旗赛第三季WEB题目Writeup
这次比赛的Web题目都比较基础,总共有五道,考察的知识点也都比较明显,所以借这次的题目来简单介绍一下几种漏洞的简单利用方法,下面的解题过程有的地方会写的比较细,主要是写给我们萌新看的,大佬们轻喷。
weak
题目难度 ⭐
php中有两种比较的符号 == 与 === ,=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较== 在进行比较的时候,会先将字符串类型转化成相同,再比较, 如果遇到了 0e\d+ 这种字符串,就会将这种字符串解析为科学计数法。"0e132456789"=="0e7124511451155" 中 2 个数的值都是 0 因而就相等了。如果不满足 0e\d+ 这种模式就不会相等。
打开网址看到了右上角明显的管理平台,点进去之后是一个用户管理平台,有一个明显的跳转到测试页链接,点进去看到了下面这些代码,感觉这就是题目的关键点了。
highlight_file(__FILE__);
if (isset($_POST['username']) && isset($_POST['password'])) {
$logined = false;
$username = $_POST['username'];
$password = $_POST['password'];
if (!ctype_alpha($username)) { #1
$logined = false;
}
if (!is_numeric($password)) { #2
$logined = false;
}
if (md5($username) == md5($password) && $username != $password) { #3
$logined = true;
}
if ($logined) {
echo "login succeed! and flag is flag{xxxxxxxxxxxx}";
} else {
echo "login failed!";
}
}
?>
首先是判断是否通过POST传入username和password两个数据&#x