php怎么绕过登陆验证,无数据库版本,有md5

醉卧美人 2011-12-31 02:12:00
我在新浪云平台建了一个网站http://hitaow.sinaapp.com嗨淘网,登陆验证是这样验证的,我一直觉得有漏洞,帮我看看先。

下面是登陆规则:
if($action=="login"){

$adminuser = var_request("username","");
$adminpass = md5(var_request("password",""));

if($adminuser==$manage_adminname && $adminpass == $manage_adminpass ){
SetCookie("COOKIEadminuser", $adminuser);

$_SESSION['adminuser'] = $adminuser;

redirect_to("main.php");

}else{
exit("<script language=\"JavaScript\">alert(\"用户名或密码错误,请重新输入!\");history.go(-1);</script>");
}
}

为什么我在登陆页面输入账号1==1 or a不能绕过验证呢,输入什么才能绕过。
...全文
474 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2012-01-04
  • 打赏
  • 举报
回复
看这段没什么,
要看你具体页面如何检查登录状态的地方
晓敬 2012-01-04
  • 打赏
  • 举报
回复
你这个基本上没什么问题,怕的暴力破解,可以加个IP验证或者是验证码之类的!从现阶段代码来看,你这个对没有暴力破解没有任何抵抗力!
kyzy_yy_pm 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tutyxiner 的回复:]

引用 7 楼 kyzy_yy_pm 的回复:

"1==1 or 'a'"????????????????????


很明显 还是不行 我一直没想通
[/Quote]
不是你说的意思,我的意思是问题在这里,你无论穿啥进来都是字符串,而你根本就不差数据库就算你注入也不能实现
晓敬 2012-01-04
  • 打赏
  • 举报
回复
不好意思,请看清楼主的题目是无数据库版本的。你们说的那些是绕过使用数据库版本使用的!
levinstong 2012-01-04
  • 打赏
  • 举报
回复
哥们你那个是怎么创建的啊
lique1985 2012-01-04
  • 打赏
  • 举报
回复
没数据库绕什么啊
jayxyz521 2012-01-04
  • 打赏
  • 举报
回复
5楼正确答案,不过都没数据库,用这个注入怎么可能绕过去?
醉卧美人 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kyzy_yy_pm 的回复:]

"1==1 or 'a'"????????????????????
[/Quote]

很明显 还是不行 我一直没想通
焦sir 2012-01-04
  • 打赏
  • 举报
回复
能绕过去???
kyzy_yy_pm 2012-01-04
  • 打赏
  • 举报
回复
"1==1 or 'a'"????????????????????
醉卧美人 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 alburthoffman 的回复:]

试试:
1==1 or 'a'
[/Quote]

你的也不行啊
qq277049 2012-01-04
  • 打赏
  • 举报
回复
现在PHP5都使用预处理的参数绑定,根本就不怕你注入了。
LuciferStar 2012-01-04
  • 打赏
  • 举报
回复
global register?
josph2012 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 tottyandbaty 的回复:]
$adminuser = var_request("username","");
$adminpass = md5(var_request("password",""));

if($adminuser==$manage_adminname && $adminpass == $manage_adminpass ){
SetCookie("COOKIEadminuser", ……
[/Quote]
一个参数化查询全部搞定,注不成了
tottyandbaty 2012-01-04
  • 打赏
  • 举报
回复
$adminuser = var_request("username","");
$adminpass = md5(var_request("password",""));

if($adminuser==$manage_adminname && $adminpass == $manage_adminpass ){
SetCookie("COOKIEadminuser", $adminuser);


这里如果我在客户端自己构造一个cookie呢?


1==1 or a 这样的只是SQL注入,但是看你的脚本,不存在查询,所以没什么用处。。。。

一般的我们验证用户名和密码 是这样的。。

select * from sometable where username='$username' and pwd='$password'

而$username=$_POST["username"];

如果用户输入:1' or 1='1 就变成了

select * from sometable where username='1' or 1='1' and pwd='$password'




imbigsnake1 2011-12-31
  • 打赏
  • 举报
回复
a' or '1'='1 你有对引号转义就不行了
AlburtHoffman 2011-12-31
  • 打赏
  • 举报
回复
试试:
1==1 or 'a'
醉卧美人 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 calky 的回复:]

'or'='or'
[/Quote]

你的也不对啊
calky 2011-12-31
  • 打赏
  • 举报
回复
'or'='or'
黄袍披身 2011-12-31
  • 打赏
  • 举报
回复
你弄明白了 1==1 or a 之类的 绕过验证是为什么绕过验证的吗?

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧