图书馆登录
这里的代码实现为: UpdateData(TRUE);
char *newpassword = trans(m_newpass); //将输入框内的文本转换为变量
char query[500] = "";
strcpy_s(query, "");
strcat_s(query, 500, "UPDATE `project`.`user` SET `psw`='");
strcat_s(query, 500, newpassword);
strcat_s(query, 500, "' WHERE `UID`='"); //以上几条语句用来拼接SQL语句
8
char uidchar[10];
_itoa_s(uid, uidchar, 10);
strcat_s(query, 500, uidchar);
strcat_s(query, 500, "';");
if (mysql_query(sock, query)) { AfxMessageBox(_T("重置失败"));
} else { AfxMessageBox(_T("重置成功"));
SendMessage(WM_CLOSE); } }问题出在这里,使用的 SQL 语句是 UPDATE `PROJECT`.`USER` SET `PSW`='用户的输入'; 这就导致用户的输入被无条件地加入到 SQL 语句里执行,如果我们在重置密码框里输入 ________________________________,那么拼合之后的语句就会成为 _____________________________________。可以看到,这条语句不仅修改了 PSW 的 值,而且还将该用户的用户组设置为 1。修改完毕后再次登录该用户,就会提示是以管 理员身份登录,并且可以使用所有功能
用户提权为管理员
提示: 1.数据库中用户权限对应的字段是 ugroup; 2.ugroup 中,1 代表管理员身份,2 代表普通用户身份; 3.软件使用方法:点击系统——连接数据库,待成功后选择“登入”,注册一个新用户 即可登录。