不过看到这小网站就知道不可能是sql server了,google一下才找到43个连接,用SQL是小题大做了点。我们继续。马上and 1=1=2发现返回页面不一样,可以注射。既然知道了是ACCESS那就只能通过来猜解管理员的密码来登陆后台了 ,继续使用 And (Select Count(*) from Admin)>=0 页面返回正常说明存在admin表,这就更加确定这程序不是他本人写的了。因为除了网上公布的些开放原码 很少有程序员用admin做为存放管理员密码的表,知道了admin表就继续猜字段吧。一般来说这样的程序用的字段无非这几个:username; password;id;userid;user_password;pwd;name;userpwd,所以猜这样的字段非常容易。语句一复制,挨个试就好了。猜了半天,发现admin表里存在username;password;id三个字段。很明显username 跟password是存放管理员用户名与密码的。 继续猜 and (select top 1 len(username) from Admin)>0。
先说下原理:如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>7成立,>8不成立,就是len(username)=8 这个在IT168安全频道的SQL 注射教程里有详细解释,可以多去看看,学习一下。这里猜密码的过程我就不详细写了,给大家贴一个地址,非常经典的SQL注射教程。
SQL注入天书:
http://publish.it168.com/2006/0224/20060224026802.shtml
经过笔者一个小时猜解终于,猜到用户为admin,字段5嘛,肯定是他啦。密码得出的MD5为dc3972bc43b78eea。通过在破解MD5值,密码为CAASD。既然知道密码了就去找后台吧,笔者自己以前收集了一个脚本,就是记录了大概几百个后台地址。遇到一个没见过的就加上虽然现在记不起那么多,但是一些常用的还是记得的。比如admin.asp; admin/admin.asp;admin_admin.asp;Admin_Login.asp;admin/admin_login.asp等等几个,这里就不写了。经过笔者一个个测试确定网站的后台地址为admin_login.asp。如图2