gpt4 book ai didi

php - SQL注入(inject)攻击如何使用无效密码登录Web应用程序?

转载 作者:行者123 更新时间:2023-11-28 23:38:20 24 4
gpt4 key购买 nike

作为类(class)项目,我用 PHP 开发了一个 Web 应用程序。现在我正尝试在我的网站上执行 SQL 注入(inject)攻击,但我不太明白这个想法。比方说,我知道一个有效的用户名,但我正在尝试使用一个无效的密码登录。我想我应该在登录页面的密码字段中输入类似 1 或 10=10 的内容,但我离成功还差得很远。

处理用户登录的代码如下:

<?php

require_once('repository_fns.php');
session_start();

if (($_POST['username']) && ($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if(login($username, $password)) {
$_SESSION['valid_user'] = $username;
}
else{
do_html_header_error_page();
do_error_message_cannot_login();
do_html_footer();
exit;
}
}

$current_user=$_SESSION['valid_user'];

do_html_header_member();
do_page_content_member($current_user);

do_html_footer();

?>

登录函数:

function login($username, $password) {
$conn = db_connect();
$result = $conn->query("select * from user where username='".$username."'
and password = sha1('".$password."')");
if (!$result) {
return false;
}

if ($result->num_rows>0) {
return true;
} else {
return false;
}
}

那么我应该如何实际执行攻击?或者此登录功能是否存在任何类型的 SQL 注入(inject)漏洞?

最佳答案

这个想法是注入(inject)一段 sql 来抑制密码检查部分。最简单的方法是使用注释“--”:

$username = "known_username'--";

所以查询将是

select * from user where username='known_username'--' and password = sha1('anything')

“--”后面的部分是注释,因此被忽略。

关于php - SQL注入(inject)攻击如何使用无效密码登录Web应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com