首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能使用mysql和php进行sql注入测试?

为什么不能使用mysql和php进行sql注入测试?
EN

Stack Overflow用户
提问于 2011-06-15 17:14:15
回答 5查看 722关注 0票数 0

我试图检查一个网站的sql注入攻击,并惊讶地发现它不是非常非常简单的预防,因为下面是简单的代码。

代码语言:javascript
复制
$sql="select * from user_acount where login_id='".$username."' and password='".$password."' and status='1' ";

我不能做任何sql注入来测试它。我写了以下内容

第一次尝试检查sql注入

代码语言:javascript
复制
Login:  admin'--
Password:'i typed nothing here '

结果密码错误,您无法登录。

第二个:

代码语言:javascript
复制
Login:  admin or 1=1 --' 
Password:''

结果密码错误,您无法登录。

第三:

代码语言:javascript
复制
Login:  admin' or 1=1 
Password:''

4:登录名: admin或1=1'--密码:‘’

结果密码错误,无法登录。

有没有人能解释一下是什么阻止了我?我没有使用预准备语句,也没有使用任何filter类,也没有使用real_escape_string?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-15 17:19:00

有两种可能性:

  1. 没有带adminlogin_id,因此查询如下:

select * from login_id='admin'

  • magic_quotes已启用的user_acount,结果查询如下:

select * from user_acount where login_id='admin\'--‘and password='’and status='1‘select * from user_acount where login_id='admin or 1=1 --\'’and password='‘and status='1’

最后一个查询总是会失败,即使魔术引号被关闭了:

select * from login where login_id='admin or 1=1 --'‘and password='’and status='1‘

由于字符串中的--注释不起作用,因此查询的解释如下:

select * from user_acount where login_id=‘STRING’、password='‘和status='1’

如您所见,这将导致在'STRING'之后出现语法错误

票数 4
EN

Stack Overflow用户

发布于 2011-06-15 17:18:16

  • Magic Quotes可能已打开(以便自动处理用户输入,以便更适合组成数据库queries).
  • Register Globals可能已关闭(因此,您必须使用$_REQUEST['username']或related,而不是$username).
  • There可能是程序中的一个错误,这会阻止输入admin'--存储在$username中(例如,表单元素名称与变量名称不匹配)。
票数 5
EN

Stack Overflow用户

发布于 2011-06-15 17:19:11

您正在输入包含引号的密码。这会破坏您的SQL查询,并且代码可能无法区分错误和合法的“没有这样的用户”结果,因此您会得到错误的密码消息。

尝试将密码保留为空。

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

https://stackoverflow.com/questions/6355494

复制
相关文章

相似问题

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