源代码如下:
if(isset($_POST['submit'])){
if($_POST['username'] && $_POST['password']) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "select * from users where username=? and password=md5(?)";
$line_pre = $link->prepare($sql);
$line_pre->bind_param('ss', $username, $password);
if ($line_pre->execute()) {
$line_pre->store_result();
if ($line_pre->num_rows > 0) {
$html .= '<p> login success</p>';
} else {
$html .= '<p> username or password is not exists~</p>';
}
} else {
$html .= '<p>执行错误:' . $line_pre->errno . '错误信息:' . $line_pre->error . '</p>';
}
}else{
$html .= '<p> please input username and password~</p>';
}
}
这源代码和第一关的一模一样,这里就不解释了。
详见:pikachu靶场第一关-密码爆破之基于表单的暴力破解(附代码审计)-优快云博客
那么这一关的验证码从何而来?又有什么意义呢?

验证码的作用:
验证码是防机器的,防止恶意破解密码、刷票、论坛灌水、刷页。有效的防止某个黑客以特定程序暴力破解的方式进行不断的登录尝试。
一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的电脑程序自动辨识出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试。
前端验证码:前端验证码是由前端浏览器生成的验证码,填完验证码后,先检查验证码正确与否,如果正确则向后端发送请求,调用后端接口。但是验证码放在前端,安全性不高。
第三关的密码爆破就是前端验证码,所以在后端的源码中并没有出现任何与验证码有关的代码。
我们来看一下前端的代码。
<script language="javascript" type="text/javascript">
var code; //在全局 定义验证码
function createCode() {
code = "";
var codeLength = 5;//验证码的长度
var checkCode =

本文详细分析了一段PHP源代码,展示了如何通过表单进行密码验证,并介绍了前端验证码的原理和重要性。着重讨论了验证码在防止暴力破解和提升网站安全性中的作用,以及前端验证码的实现,包括使用javascript生成和验证的过程。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



