首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于SQL注入Mysql

问关于SQL注入Mysql
EN

Security用户
提问于 2018-07-05 09:37:10
回答 1查看 203关注 0票数 0

我试图在一个站点上测试SQL注入(PHP,使用MySQL数据库)。当我在username字段中放置一个撇号,并将密码框留空时,提交后,表单重新加载,字段再次变为空。但是当我在密码字段中使用一个撇号时,消息会说“无效用户名/密码”。

这说明了什么?如果我把admin‘作为用户名(不要添加注释)和密码字段中,写;Drop Table users; (不添加注释),我的评论会工作吗?

EN

回答 1

Security用户

发布于 2018-07-05 10:05:27

没有足够的信息来说明--考虑到这一点,它可能只是拒绝空密码,并在密码字段中接受任何输入,对其进行散列,然后根据DB安全地检查它。

考虑以下伪代码(这并不是好的实践,只是清楚地读--不要在生产中使用!):

代码语言:javascript
复制
if (isempty($password)) {
  reloadPage();
} else {
  $query = "SELECT * FROM users where username = :username";
  if ($user = dbquery($query, $username)){
    if (checkpassword($password, $user.password)){
      login();
    } else {
      reloadPage("Invalid Username/Password");
    }
  } else {
    reloadPage("Invalid Username/Password");
  }
}

这将给出所描述的行为,而不允许SQLi (假设dbquery函数明确区分查询数据和用户提供的参数)。

稍微撇开一点说,在渗透测试中使用DROP TABLE不太可能对客户端有好处。您应该使用更安全的方法来验证潜在的缺陷:例如,获取当前DB用户。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/189002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档